大神们,这是我写的两个代码,都报错找不到元素
没有 try......except 的那个代码会报错 Timeexception,求助大家,帮助一下我这个小菜鸟,真的不是伸手党,查了很多资料,还是没有搞懂
围观的朋友,奉献上你们的干货吧,大家一起解决这个问题,谢谢
用 xpath 定位呢
建议不要随便用 “大神” 这样的称呼,社区里面对这个称呼欢迎度一般。
另外,你第二个截图里面,是先切换了 webview 再查找原生控件的,顺序错了。切换 webview 后只能找到 webview 里面的网页控件,无法找到原生控件了。
至于为何找不到元素,可以先在你查找元素前增加一个输出页面 xml 布局源码的函数查看布局情况(函数印象中是 driver.page_source
,建议你查下 api 文档),确认下是否布局里面就没有你这个元素。
你把你 pagesource 打印出来,这样才能确保你已经切换到对应 webview
@13楼的,你是怎么试的啊,可以把你的代码分享一下吗,谢谢
@friday 如果已经切换 H5 页面成功,通过 name 查找元素的话,试试 find_element_by_link_text 方法
@friday 把你的 Appium 关于这一段的日子发出来.
首先,打印的的 contexts,看看是否能获取到 WEBVIEW_com.xx.xx, 能获取得到则
driver.switch_to.context(context.driver.contexts[1]),切换失败,看看日志
@friday 看你的 appium 日志,有多个 H5 页面,根据你要找的元素在哪个 webview 然后切换到对应的 webview
@friday 神级仙医在都市,看你 h5 页面显示的连接件,WEBVIEW 应该是'WEBVIEW_com.sina.book',你把代码里面 driver.contexts[-1] 获取的 WEBVIEW 打印出来呗,不行就直接 driver.contexts['WEBVIEW_com.sina.book']
切没切换成功 你把 context 打印出来看看不就 OK 了吗.怎么切换的就是 switch_to_context 啊 .......................
1.desired_caps = {
'automationName': 'Uiautomator2', # 设置捕获 Android Toast 提示
'app': appLocation, # app 路径
'appPackage': appPackage, # app 包名
'deviceName': deviceName, # 设备名称
'udid': deviceId, # 设备唯一编号
'appActivity': launchActivity, # 应用启动 activity
'chromeOptions': {'androidProcess': appPackage},
'platformName': 'Android', # 应用平台名称
'platformVersion': deviceVersion, # 应用平台版本
'unicodeKeyboard': True, # 设置输入法能输入中文
'resetKeyboard': True,
'newCommandTimeout': 120, # Appium 超时时间设置
'noSign': True # 跳过检测和对应用进行 debug 签名的步骤,防止 app 签名被修改,导致更新不了应用
}里面加上'chromeOptions': {'androidProcess': appPackage},
2.查看你手机的 Android System WebView 的版本与你 Appium 里面的 chromedriver 的版本是否匹配 (/uploads/photo/2017/dd374f11-a8eb-4229-a24f-86cacc1d9dc7.png)
http://chromedriver.storage.googleapis.com/index.html
楼主遇到过切换 webview 卡死的情况吗?我现在在使用 switch_to_context 会卡死呢?
试下这个方法呢
driver.find_element_by_xpath(xxxxxxxxxx'精选').click()----------点开精选
print driver.current_context
driver.switch_to.context('xxxxxxxxx')
感觉就是 22 楼的方法
context 的()里是什么呀,坐标元素?