selenium+webdriver+python定位不到元素的原因及解决办法

在定位元素过程中,总会遇到这样那样的问题,下面就最近遇到的4大类问题,得到的解决方法,来做个总结。

  1. xpath描述错误的
    这个是因为在描述路径的时候没有按照xpath的规则来写 造成找不到元素的情况出现
    2.动态id定位不到元素
    在工作过程中,有时候会遇到类似这样的动态id
    //[@id=“listbg00.42585085760747465”]/td[3]/img
    相应的直接copy xpath 的方法得到:
    //
    [@id=“listbg00.46422763314941284”]/td[3]/img
    对于此类方法,不能通过id 以及简单的copy path去准确定位元素,因为他们是动态变化的。
    解决方法:
    采用xpath定位方法中,属性+层次相结合的方法可以得到,比如:
    这里写图片描述
    find_element_by_xpath("//td[class=‘tessdoperate’]/img")
  2. 点击速度过快 页面没有加载出来,就需要点击页面上的元素
    对于这种情况,,解决此方法:
    只需要加合理的时间等待。
    诸如:time.sleep(3)
  3. 不在同一个frame里边查找元素
    我们会遇到使用id/xpath/name都不能准确定位元素,主要是因为使用到了frame框架。
    那么如何去定位元素,如何去找元素?
    通过IDE去模拟,然后再找到该元素所在的frame。
    selenium+webdriver+python定位不到元素的原因及解决办法_第1张图片
    写一个小脚本去判断元素是否被准确定位到。其脚本如下:
try:
    driver.switch_to_frame(driver.find_element_by_name("menu")) #针对Frame=menu的情况
    time.sleep(2) 
    driver.find_element_by_xpath("//*[@id='mi']/a/span").click()
    driver.find_element_by_xpath("//*[@id='mc']/a/span").click()

    time.sleep(4)

    driver.switch_to_frame(driver.find_element_by_name("config")) #再针对Frame=config的情况
    driver.find_element_by_xpath("//*[@class='value']/img").click()
    time.sleep(3)
    print("it's ok")
except:
    print ("没有找到元素")
else:
    print ("元素存在")
finally:
driver.quit()

这样一步一步去debug浏览器中的元素是否被准确定位到。

以上是最近项目过程中,遇到的一些问题,折腾后,得到的解决方法,可行。于是在此,做个总结。同时,也谢谢网友们的分享。

遇到问题后,一个一个去解决,这便是成长。在IT行业,所使用的测试工具以及知识更新太快,只有不断的保持学习的能力和拥有积极的态度,才能保持核心竞争力。
加油!

更多测试交流,加好友:
selenium+webdriver+python定位不到元素的原因及解决办法_第2张图片

你可能感兴趣的:(Selenium,Python)