美文网首页
Appium遇到的坑

Appium遇到的坑

作者: 檐下风铃听雨声 | 来源:发表于2021-01-27 20:12 被阅读0次

    官方使用的链接: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)进行切换。这样才能正常访问对应的元素。

    相关文章

      网友评论

          本文标题:Appium遇到的坑

          本文链接:https://www.haomeiwen.com/subject/udzywktx.html