前军教程网

中小站长与DIV+CSS网页布局开发技术人员的首选CSS学习平台

Selenium 八种元素定位方法,定位元素找不到时怎么处理?

id定位:

  • find_element_by_id()

name定位:

  • find_element_by_name()

class定位:

  • find_element_by_class_name()

tag定位:

  • find_element_by_tag_name()

link定位文本:

  • find_element_by_link_text()

partial_link定位:

  • find_element_by_partial_link_text()

超链接的文本很长时,全部输入麻烦,又显不美,这时候就可以只截取一部分字符串,用这种方法模糊匹配

xpath定位:

  • find_element_by_xpath()

CSS定位:

  • find_element_by_css_selector()

selenium定位不到元素的几种情况和解决方法

  1. 动态ID,每次调用页面出现的元素的ID会动态随机分配
    1. 使用xpath的相对路径方法查找到该元素
  2. 内嵌页面Iframe,导致无法定位到Iframe的页面元素
    1. driver.switchTo().frame(Id/name/element)来进行进入指定id/name/element的iframe内嵌页面中,从而可以定位iframe内部元素
  3. Xpath定位不到
    1. 可以使用css selector进行定位,或者使用driver.findElements()来获取一组元素,再进行遍历出想要的那个元素
  4. 点击速度过快,导致页面还未加载完成,定位不到对应元素
    1. 增加一定的等待时间
  5. 窗口切换,窗口句柄还处在上一个窗口,导致无法定位新窗口的元素
String currentWindow = driver.getWindowHandle();//获取当前窗口句柄
Set<String> handles = driver.getWindowHandles();//获取所有窗口句柄
for(String windowId : handles){
    if(!windowId.equals(currentWindow)){
        driver.switchTo().window(windowId);
        System.out.println(driver.getCurrentUrl());
        break;
     }
}

往期相关:

GUI自动化测试

GUI自动化测试(2)

Selenium和Appium的工作原理与区别

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言