zoukankan      html  css  js  c++  java
  • selenium-python元素定位技巧(二)

    在python-selenium元素定位中,有很多小技巧,在此记录总结

     技巧一、有关联关系的元素有交集关系时,必须添加固定等待,整体调试时候也适当增加固定等待,保持代码运行稳定性。下拉的时候选择下拉框有时候也需要等待。

    当遇到两个元素有交集依赖(先后)关系,重新加载的时候,需要消耗时间等待,必须添加一个固定等待(备注:一定要固定等待,隐式等待无效)

    举例:
    下拉框的选择,比如选择省份>城市,在选择省份后一定要添加固定等待后再去选择城市。
    代码举例:
    driver.find_element(By.XPATH,"//div[@id='project_chosen']").click()   #下拉框一的div的定位
    time.sleep(1)
    driver.find_element(By.XPATH,"/[@title='提成项目1']").click()   #下拉框的值的输入
    time.sleep(2)  #需要固定等待,因为有依赖关系
    driver.find_element(By.XPATH,"//div[@id='openedBuild_chosen']").click() #固定等待后再去选择下拉框二
    driver.find_element(By.XPATH,"/[@title='OA2.7.2版本1']").click()  #选择下拉框二的子选项的值,一定要检查到子选项的值

     技巧二、同一个界面,当元素属性相同,但非同一个元素,可利用多属性识别,否则可能会定位元素报错,也可以使用不同的定位方式。

     技巧三、某些元素不能定位到,可能是该元素在当前界面所在位置不可见了,解决方案

    a、可将鼠标滚动下拉

    b、考虑将浏览器最大化处理

    c、将浏览器下拉移动到该元素可见的位置。

    举例:

    element=driver.find_element(By.XPATH,"//div[@id='mailto_chosen']")  #当前不可见但是需要下拉滚动条操作的元素
    driver.execute_script('arguments[0].scrollIntoView();',element)
    element.click()
    time.sleep(1) ##必须加等待,否则不准确,再去操作后续元素
    driver.find_element(By.XPATH,"//div[@id='mailto_chosen']/div/ul/li[@title='C:测试001']").click()  ##可分层定位,先定位到div,再定位到div下面的子选项进行输入。

     技巧四、当需要调试一个模块的功能时候,先把能单独拆分的小功能内部调通,再整体调试

     技巧五、当定位不到元素时,先定位到该元素的上级,再定位到该元素。

    例如:
    driver.find_element(By.XPATH,"//div[@id='mailto_chosen']/div/ul/li[@title='C:测试001']").click() ##可分层定位,先定位到div,再定位到div下面的子选项进行输入。
    或:
    driver.find_element(By.XPATH,"//td[contains(@title,'人工修改提成失败')]").click()  #点击标题先定位到当前行,可通过元素定位看出来。
    ##根据链接进入BUG详情页
    driver.find_element(By.XPATH,"//td[contains(@title,'人工修改提成失败')]/a").click() #再通过点击当前行的相对路径方式定位到可点击的BUG的链接点击进入BUG详情
    time.sleep(1)




     
  • 相关阅读:
    SpringBoot 断点调试无效问题解决
    oracle数据库入门
    IPFS入门
    Spring安全参考
    什么是内存泄漏?该如何检测?又该如何解决?
    coredump
    同一个程序在一个系统中可以跑起来,在另外一个系统上跑不起来
    dpkg 强制安装deb文件
    日志文件丢失
    文件句柄资源
  • 原文地址:https://www.cnblogs.com/123anqier-blog/p/12682843.html
Copyright © 2011-2022 走看看