官方使用的链接:https://github.com/appium/appium-xcuitest-driver/blob/master/docs/real-device-config.md
1.每次appium重启浏览器的时候,都是一个全新的浏览器,所以如果需要登陆的情况下,可以使用通过设置cookies的方式登陆。
#进行cookies的设置
self.driver.add_cookie({"name": "__Host-APPLOVINID", "value": "593f595bc90eb2a5e6d637f805482df3"})
2.控件有时候使用appium-desktop可以获取到,click却无法操作,这是因为控件设置成了enable,可以使用相对位置的方式进行操作。
3.很多时候,找不到控件原因,是因为在使用的时候,控件没有刷新出来,所以可以使用wait操作,如果出现进行点击,或者使用sleep操作进行操作。
4.“element not interactable”问题根因:元素不可交互,可能的原因及解决方法如下所示:
-
检查元素的定位(XPATH、CSS_SELECTOR内的内容)是否写正确
-
代码中元素进行获取的时候查看是否已经加载出来,等待元素加载可以使用显式等待
element = WebDriverWait(browser,20,0.5).until(EC.presence_of_element_located((By.XPATH,'//*[@id="app"]/div')))
-
元素在页面上不可见,需要拖动下拉框才能看到这个元素,此时需要让元素在页面上可见,才可操作
-
可能是页面元素被iframe标签包裹起来了:如163邮箱登录
-
可以使用如下的方法进行解决
element=driver.find_element_by_css_selector('XXXXXX')
driver.execute_script("arguments[0].click();",element)
6.网页一些特殊元素的常规操作
- 1、鼠标悬停:
from [selenium.webdriver.common.action_chains](http://selenium.webdriver.common.action_chains) import ActionChains
loginName = driver.find_element_by_xpath('//*[@id="sb"]')
# 对定位到的元素进行鼠标悬停的动作
ActionChains(driver).move_to_element(loginName).perform()
#等待几秒
sleep(3)
#点击弹出的某个元素
driver.find_element_by_link_text(u' 退出系统').click()
- 2、鼠标双击
codeArea = WebDriverWait(driver, 20, 1).until(EC.presence_of_element_located((By.XPATH, '//[@id="grid_StudyDomain"]/tbody/tr[2]/td[2]/div/div[1]/table/tbody/tr[2]/td[2]')))
ActionChains(driver).double_click(codeArea).perform()
7.网页一些特殊元素的常规操作
我们加载网页的时候,获取元素获取不到,这个时候可以考虑网络的整体框架是否,查看是否因为在frame
里面,使用self.driver.switch_to.frame(iframe_name)
进行切换。这样才能正常访问对应的元素。
网友评论