zoukankan      html  css  js  c++  java
  • Python + Selenium 定位非selected型下拉框的方法

    最近在尝试给自己负责的模块写UI自动化的Demo

    登录及切换页面比较顺利

    但是遇到下拉框的选择时,遇到了一点困难

    我负责的模块页面的下拉框并非Select类型,无法使用select_by_index or select_by_value等方法

    其下拉框的html长这样:

    是ul下包裹100+li的形式

    先说一下错误路径:

    (1)先定位到产品名称字段,然后通过send_key()把想要录入的值输入

    结果:前端设定录入后必须点击才能选上,导致最后提交时,报该字段为空

    (2)尝试两次点击

    先定位到产品名称字段

    然后定位下拉选项

    两次定位均使用XPath方式,且使用的是Chrome插件 ChroPath

    结果:程序报错,报element can not interable 或者 Unable to locate element等错误

    尝试加入睡眠时间,未果

    (3)两次查找,一次点击

    代码如下:

    Product_list = browser.find_element_by_xpath("//div[@class='el-input el-input--suffix']//input[@placeholder='请选择产品名称']")
    Product_list.find_element_by_xpath('//span[text()="040004    兴业银行2013专户4号"]').click()

    结果:仍然报错

    (4)尝试自己写Xpath

    搜了无数的文章,自己尝试写了无数次

    终于解决了,也算是对我即将崩溃的心灵的一次慰藉

    说一下成功的这一次的Xpath的编写路径:

    打开Xpath Helper,按住Shift,查看我要选择的下拉框所在的块

    找到对应div,往下查找特殊的能唯一标识元素位置的节点

    最终的Xpath长这样:

    //div[@class="el-select-dropdown el-popper"]//ul[@class="el-scrollbar__view el-select-dropdown__list"]/li/span[contains(text(),"040004")]

    下图为关键节点的位置示意图:

    Bingo,终于完美解决,附上对应代码:

    browser.find_element_by_xpath("//div[@class='el-input el-input--suffix']//input[@placeholder='请选择产品名称']").click()
    time.sleep(3)
    browser.find_element_by_xpath('//div[@class="el-select-dropdown el-popper"]//ul[@class="el-scrollbar__view el-select-dropdown__list"]/li/span[contains(text(),"040004")]').click()

    长叹一口气:

    只要大方向正确,那就得多尝试、不气馁

    加油加油加油!

  • 相关阅读:
    Java时间和时间戳的相互转换
    linux 通过pid 寻找程序路径的最简单命令(pwdx)
    Oracle--存储过程学习进阶
    经典sql总结(2)
    经典sql总结(1)
    类的初始化
    StringBuffer和String 的例子
    i=i++
    一个异常学习的好例子
    有空研究这篇http://blog.csdn.net/studyvcmfc/article/details/7720258 研究后写篇记录
  • 原文地址:https://www.cnblogs.com/QianyuQian/p/13085636.html
Copyright © 2011-2022 走看看