在自动化中python对下拉框的处理网上相对实例比较少,其它前辈写的教程中对下拉也仅仅是相对与教程来说的,比如下面:

m=driver.find_element_by_id("ShippingMethod")
m.find_element_by_xpath("//option[@value='10.69']").click()

对下拉框后再进行属性定位的点击!

但在实际应用中,不可能通过value值来判断,一般都是通过当前显示的值来判断,所以教程只能教你入门,但应用还得靠自己。

废话少说,开始教程

一、典型的select option格式下接框

比如下面这样一段html代码,在实际自动化测试中不可能通过value值来判断,因为每次都得看value值,更多的时候是通过title值来判断的

<html>
<body> <div class="menu_bar" style="margin: 0px 5px 0px 135px;">
<div style="display: inline; ">
<form style="display:inline" name="productForm" action="lib/general/navBar.php" method="get">
<input type='hidden' name='CSRFName' id='CSRFName' value='CSRFGuard_1522071984' />
<input type='hidden' name='CSRFToken' id='CSRFToken' value='a1bd2844bf055061e48b4ed7a1400f5574030db73737bbdb356ec9ab3efa0cd9de4187f0a521f28f2b2a85574d01171c674d81cdcec7410e1cca36c31e7919c0' />
测试产品
<select style="font-size: 80%;position:relative; top:-1px;" name="testproject" onchange="this.form.submit();">
<option value="2" title="test1:某某某监控系统"
>
test1:某某某监控系统</option>
<option value="12810" title="test2:某某能力平台"
>
test2:某某能力平台</option>
<option value="1332" title="test3:某某财务系统"
>
test3:某某财务系统</option>
<option value="12684" title="test4:公共平台"
>
test4:公共平台</option>
<option value="1" title="test5:北京雾霾监控"
selected="selected" >
test5:北京雾霾监控</option>
<option value="31823" title="test6:QQ对接"
>
test6:QQ对接</option>
<option value="32154" title="test7:南方都市报"
>
test7:南方都市报</option>
<option value="1528" title="test8:联通平台"
>
test8:联通平台/option>
<option value="944" title="test9:移动平台"
>
test9:移动平台</option>
</select>
</form>
</div>
</body>
</html> 测试产品
test1:某某某监控系统
test2:某某能力平台
test3:某某财务系统
test4:公共平台
test5:北京雾霾监控
test6:QQ对接
test7:南方都市报
test8:联通平台/option>
test9:移动平台

例如我们要选择 test6:QQ对接  该如何选择呢,

方法一如下:

    #遍历下拉框并选择需要的项目
select = browser.find_element_by_name("testproject")
allOptions = select.find_elements_by_tag_name("option") for option in allOptions:
print "Value is: " + option.get_attribute("value")
print "Text is:" +option.text
if 'test6' in option.text:
option.click()
break

也可用网上的方法二:

Select(driver.find_element_by_name("testproject")).select_by_visible_text("test6:QQ对接")

但方法二必需要将文本写全才对选择,如果写错那也不能选

二、用了bootstrap特效的dropdow下拉框

如下图中的下拉框

类型这种用下面这种方法:

browser.find_element_by_xpath("//div[contains(@class,'chosen-c')]").click()
time.sleep(1) lis=browser.find_elements_by_xpath("//ul[@class='chosen-results']/li") for li in lis:
if "行业测试" in li.text:
i.click()
break
time.sleep(2)

也是通过获取元素对像list来遍历,得到想要的数据后就停止,这里注意

find_elements_by_xpath   是elements

三、我们在网上填写资料时,经常会遇到下面这种框

这种款,不能手工输入,输入后会不识别,是因为后台将值传换为对应的code,所以必须靠手工选,比如深圳出入境申请网页的选择,可以用如下方法:
provides=browser.find_elements(By.XPATH,"//div[starts-with(@class,'x-grid3-row')]")
while True:
if [ttd for ttd in provides if "江西" in ttd.text]: for ttd in provides: if "江西" in ttd.text:
print 'Click OK'
ttd.click()
break
else:continue
break
else:
browser.find_element_by_xpath("//button[starts-with(@class,'x-btn-text x-tbar-page-next')]").click()
provides=browser.find_elements(By.XPATH,"//div[starts-with(@class,'x-grid3-row')]")
print [provide.text for provide in provides][1]
time.sleep(1)

将元素获取后再将值循环,如果值在内就跳出循环,如果值不在内,就点击下一页


总结:在实际自动化测试中page_object模式中,这就非常方例如将数据提取出来了

参考:http://www.bubuko.com/infodetail-1115484.html

python webdriver中对不同下拉框通过文本值的选择的更多相关文章

  1. 获取下拉框的文本值和value值

    http://www.cnblogs.com/djgs/p/3691979.html?utm_source=tuicool&utm_medium=referral 现在有一个Id为AreaId ...

  2. crm使用soap更改下拉框的文本值

    //C#代码 //UpdateStateValueRequest updateStateValue = new UpdateStateValueRequest //{ //    AttributeL ...

  3. selenium python (十二)下拉框的处理

    #!/usr/bin/python# -*- coding: utf-8 -*-__author__ = 'zuoanvip' #下拉框在web页面上非常常见,对于下拉框的处理采用二次定位的方法进行元 ...

  4. HTML中的select下拉框内容显示不全的解决办法

    HTML中的select下拉框内容显示不全的解决办法 今天,我遇到这样一个问题:查询栏中的下拉框中的内容过长,导致部分被覆盖了. 查询了一些资料,有的说用函数控制,有的说用事件控制,有的看不懂,有的实 ...

  5. Selenium常用API用法示例集----下拉框、文本域及富文本框、弹窗、JS、frame、文件上传和下载

    元素识别方法.一组元素定位.鼠标操作.多窗口处理.下拉框.文本域及富文本框.弹窗.JS.frame.文件上传和下载 元素识别方法: driver.find_element_by_id() driver ...

  6. js 设置下拉框的默认值

    设置下拉框的默认值,直接在option中增加selected就可以了.但是现在要使用JS来设置它的默认值,代码如下: <select name="aaa" id=" ...

  7. jQuery操作下拉框的text值和val值

    jQuery操作下拉框的text值和val值 1,JS源码 <select name="select1" id="select1" style=" ...

  8. Python3.x:遍历select下拉框获取value值

    Python3.x:遍历select下拉框获取value值 Select提供了三种选择方法: # 通过选项的顺序,第一个为 0 select_by_index(index) # 通过value属性 s ...

  9. easyui的combobox下拉框初始化默认值以及保持该值一直显示的方法

    easyui的combobox下拉框默认初始值是空,下面是实现从远程加载数据之后初始化默认值,以及让该值一直排在下拉框的最顶部的方式. 目前的需求是需要在初始化的时候添加"全部数据库&quo ...

随机推荐

  1. openfire url get提交 中文乱码问题

    原因是它只接受url编码后的中文 如:%E7%BC%96%E7%A0%81%E5%90%8E%E7%9A%84%E4%B8%AD%E6%96%87 会自动转变为:http://127.0.0.1:90 ...

  2. PHP wamp server问题

    只能说各种不顺,天热人烦! 问题一.wampapache服务不能启动之VCRUNTIME140.DLL文件丢失. 这个是缺少VC运行库,查找并安装相应的文件即可. 问题二.wampapche服务不能启 ...

  3. Zookeeper 基础

    在深入了解ZooKeeper的运作之前,让我们来看看ZooKeeper的基本概念.我们将在本章中讨论以下主题:1.Architecture(架构)2.Hierarchical namespace(层次 ...

  4. yasm开源汇编器分析

    https://www.google.com.hk/search?q=yasm&oq=yasm&aqs=chrome..69i57&sourceid=chrome&es ...

  5. par函数的adj 参数- 控制文字的对齐方式

    adj 用来控制文字的对齐方式,取值范围为0到1,控制图片中x轴和y轴标签,标题,以及通过text 添加的文字的对齐方式 0表示左对齐,代码示例: par(adj = 0)plot(1:5, 1:5, ...

  6. KO 数据库分类系统介绍

    KEGG Orthology数据库不仅对基因的功能进行了扩充和整理,还对功能进行了细致的分类: 针对基因的功能,共有3级分类,第一级有6个大类: 打开下面这个链接 http://www.genome. ...

  7. link with editor

    在左侧explore上,有个双向的箭头,点一下,就会把路径和当前文件自动对应

  8. java web 复选框checked

    熟悉web前端开发的人都知道,判断复选框是否选中是经常做的事情,判断的方法很多,但是开发过程中常常忽略了这些方法的兼容性,而是实现效果就好了.博主之前用户不少方法,经常Google到一些这个不好那个不 ...

  9. mysql中什么是物理备份?

    需求描述: 今天在看数据库备份,恢复的内容,就是对于一个概念,物理备份的理解,在这里记录下. 概念解释: 物理备份:就是对存储数据库内容的目录和文件的直接拷贝.简单来说,就是对物理文件的拷贝. 文档创 ...

  10. Spring Framework 官方文档学习(四)之Validation、Data Binding、Type Conversion(二)

    接前一篇 Spring Framework 官方文档学习(四)之Validation.Data Binding.Type Conversion(一) 本篇主要内容:Spring Type Conver ...