彻底学会Selenium元素定位( 六 )

元素定位总结

  • 首先考虑id定位,id定位是效率最高的
    一般情况下id属性在当前页面是唯一的 。
    在实际企业项目中,可能需要前端同学的配合,保证元素唯一属性命名规则 。所有可操作元素,例如输入框、点击按钮等均需要加id字段,并且id字段的命名为元素含义的英文;若当前页面存在两个或多个一样的元素,则第二个开始命名为id=username2,以此类推;多层级元素一般最外层定义即可 。
  • 如果没有id,再选择xpath,一般使用相对路径
  • css_selector比xpath更加稳定
    为什么说css_selector比xpath更稳定?因为我们通过Chrome浏览器的开发者工具可以看出蓝色线代表DOM出现,红色线代表图片等资源已加载完,如果用xpath定位元素,其实是在DOM出现的时候进行查找,而当你使用css_selector进行元素定位的时候,它会等待图片资源加载完成后进行查找,也就是红线的位置,所以css_selector比xpath更稳定,当你使用xpath定位不到元素时,不妨尝试使用css_selector 。
    彻底学会Selenium元素定位

    文章插图
  • tag_name使用频率最低
  • 尽量不要用href属性、纯数字的属性(纯数字可能是个动态值)去定位
  • 对于Toast提示框,很快消失的提示框,可以点击 开发者工具-sources中的暂停键 后再去定位
    彻底学会Selenium元素定位

    文章插图
  • 添加适当的等待时间,避免等待时间不够,元素还未加载出来
  • 多窗口时需考虑窗口句柄是否还处在上一个窗口,导致无法定位新窗口的元素,是否需要切换窗口句柄
  • iframe/frame,这是个常见的定位不到元素的原因,frame中实际上是嵌入了另一个页面,而webdriver每次只能在一个页面识别,因此需要先定位到相应的frame,再对那个页面里的元素进行定位
  • 如果使用xpath或css_selector,请在浏览器开发者工具中调试测试正确后再写入代码中
【彻底学会Selenium元素定位】

经验总结扩展阅读