Appium+Android SDK自动阅读今日头条极速版新闻

from appium import webdriver
from time import sleep
import json
#获取进入主界面的配置i
desired_caps = {}
desired_caps['platformName'] = 'Android'
desired_caps['platformVersion'] = '9.0'
desired_caps['deviceName'] = 'PWHUT19927016255'
desired_caps['appPackage'] = "com.ss.android.article.lite"
desired_caps['appActivity'] = "com.ss.android.article.lite.activity.SplashActivity"
desired_caps['noReset'] = 'true'

#appium服务器
server="http://localhost:4723/wd/hub"
print(json.dumps(desired_caps))
#链接appium服务器
driver = webdriver.Remote(server,desired_caps)

#向上滑动界面
def swipeUp(driver, t=500, n=1):
    l = driver.get_window_size()
    x1 = l['width'] * 0.5  # x坐标
    y1 = l['height'] * 0.75  # 起始y坐标
    y2 = l['height'] * 0.25  # 终点y坐标
    for i in range(n):
        driver.swipe(x1, y1, x1, y2, t)

#像下滑动界面
def swipeDown(driver, t=500, n=1):
    l = driver.get_window_size()
    x1 = l['width'] * 0.5  # x坐标
    y1 = l['height'] * 0.25  # 起始y坐标
    y2 = l['height'] * 0.75  # 终点y坐标
    for i in range(n):
        driver.swipe(x1, y1, x1, y2, t)

#向左滑动界面
def swipLeft(driver, t=500, n=1):
    l = driver.get_window_size()
    x1 = l['width'] * 0.75
    y1 = l['height'] * 0.5
    x2 = l['width'] * 0.25
    for i in range(n):
        driver.swipe(x1, y1, x2, y1, t)

#向右滑动界面
def swipRight(driver, t=500, n=1):
    l = driver.get_window_size()
    x1 = l['width'] * 0.25
    y1 = l['height'] * 0.5
    x2 = l['width'] * 0.75
    for i in range(n):
        driver.swipe(x1, y1, x2, y1, t)


# 选择新闻 定位新闻组件
def selectNews(driver):
    news = []
    try:
        news = driver.find_element_by_id("android:id/list").find_elements_by_xpath(
            "//*[@resource-id='com.ss.android.article.lite:id/b_'][@clickable='true']")
    except BaseException as e:
        swipeUp(driver, 2000, 1)
        news = selectNews(driver)
    return news


# 阅读新闻
def readNew(driver):
    print("阅读消息......")
    news = selectNews(driver)
    for index, item1 in enumerate(news):
        try:
           it=item1.find_element_by_class_name("android.widget.TextView")
           print(it.text)
           item1.click()
           sleep(6)
           try:
              gbBtn = driver.find_element_by_id("com.ss.android.article.lite:id/a1b")
              print(gbBtn)
              if (gbBtn):
                 sleep(20)
                 driver.keyevent(4)
                 sleep(5)
           except Exception:
                 print("未获取到文字关闭按钮......")
           try:
              gbBtn = driver.find_element_by_id("com.ss.android.article.lite:id/w6")
              print(gbBtn)
              if (gbBtn):
                 sleep(20)
                 driver.keyevent(4)
                 sleep(5)
           except Exception:
                 print("未获取到视频关闭按钮......")
        except Exception as e:
           print("获取新闻信息异常......")
           print(e)
#输出当前界面的Activity
print(driver.current_activity)
#等待几面完全加载完成
driver.wait_activity("com.ss.android.article.lite.activity.SplashActivity",10)
# 获取新闻分类标题
header = driver.find_element_by_id("com.ss.android.article.lite:id/a5w")
list = header.find_elements_by_class_name("android.widget.TextView")
# 找到标题元素 循环点击
for index, item in enumerate(list):
    print(item.text)
    item = list[index]
    # 然后开始查找新闻列表
    # 阅读新闻函数 # 每个分类阅读的页数  
    pageNum = 0
    while (pageNum < 10):
        readNew(driver)
        swipeUp(driver, 2000, 1)
        pageNum += 1
print(list)
driver.quit()
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值