python webdriver中对不同下拉框通过文本值的选择
在自动化中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中对不同下拉框通过文本值的选择的更多相关文章
- 获取下拉框的文本值和value值
http://www.cnblogs.com/djgs/p/3691979.html?utm_source=tuicool&utm_medium=referral 现在有一个Id为AreaId ...
- crm使用soap更改下拉框的文本值
//C#代码 //UpdateStateValueRequest updateStateValue = new UpdateStateValueRequest //{ // AttributeL ...
- selenium python (十二)下拉框的处理
#!/usr/bin/python# -*- coding: utf-8 -*-__author__ = 'zuoanvip' #下拉框在web页面上非常常见,对于下拉框的处理采用二次定位的方法进行元 ...
- HTML中的select下拉框内容显示不全的解决办法
HTML中的select下拉框内容显示不全的解决办法 今天,我遇到这样一个问题:查询栏中的下拉框中的内容过长,导致部分被覆盖了. 查询了一些资料,有的说用函数控制,有的说用事件控制,有的看不懂,有的实 ...
- Selenium常用API用法示例集----下拉框、文本域及富文本框、弹窗、JS、frame、文件上传和下载
元素识别方法.一组元素定位.鼠标操作.多窗口处理.下拉框.文本域及富文本框.弹窗.JS.frame.文件上传和下载 元素识别方法: driver.find_element_by_id() driver ...
- js 设置下拉框的默认值
设置下拉框的默认值,直接在option中增加selected就可以了.但是现在要使用JS来设置它的默认值,代码如下: <select name="aaa" id=" ...
- jQuery操作下拉框的text值和val值
jQuery操作下拉框的text值和val值 1,JS源码 <select name="select1" id="select1" style=" ...
- Python3.x:遍历select下拉框获取value值
Python3.x:遍历select下拉框获取value值 Select提供了三种选择方法: # 通过选项的顺序,第一个为 0 select_by_index(index) # 通过value属性 s ...
- easyui的combobox下拉框初始化默认值以及保持该值一直显示的方法
easyui的combobox下拉框默认初始值是空,下面是实现从远程加载数据之后初始化默认值,以及让该值一直排在下拉框的最顶部的方式. 目前的需求是需要在初始化的时候添加"全部数据库&quo ...
随机推荐
- java分布式集群
http://blog.csdn.net/guzicheng/article/details/11580841
- MATLAB 安装使用libsvm详细步骤
根据本文后面部分博友提出的在配置过程中出现的问题,其中需要特别强调的一点:整个过程,都是在 libsvm-3.12\matlab目录下操作的.如果这一点你忽视了,你不可能解决配置中报的Bug,即使重新 ...
- mssql 设置id自增 设置主键
主键自增长列在进行数据插入的时候,很有用的,如可以获取返回的自增ID值,接下来将介绍SQL Server如何设置主键自增长列,感兴趣的朋友可以了解下,希望本文对你有所帮助 1.新建一数据表,里 ...
- JVM基础知识与配置
1 怎样设置JVM内存设置 本文向大家简介一下进行JVM内存设置几种方法.安装Java开发软件时.默认安装包括两个目录,一个JDK(Java开发工具箱).一个JRE(Java执行环境,内含JVM),当 ...
- erlang-百度云推送Android服务端功能实现-erlang
百度云推送官方地址http://developer.baidu.com/wiki/index.php?title=docs/cplat/push 简单的介绍下原理: 百度云推送支持IOS和Androi ...
- 转载:mysql如果数据不存在,则插入新数据,否则更新的实现方法
转自:http://www.jb51.net/article/28885.htm //如果不存在,则插入新数据 $sql = "INSERT INTO {$ecs->table(‘ca ...
- Pacbio 纯三代组装复活草基因组
对于植物等真核生物基因组来说,重复序列, 多倍体,高杂合度等特征在利用二代数据进行组装的时候都会有很大的问题: 利用二代数据组装出来的基因组,大多达不到完成图的水准,通常只是覆盖到编码蛋白的基因区域, ...
- CentOS和Ubuntu安装软件命令对比(区别)
此表内容来自<Ubuntu Server最佳方案>,CentOS和Ubuntu(Debian)是VPS最常见的系统,这份表很实用,分享下
- SQL 模糊查询LIKE concat用法
concat用来拼接查询的字符串,如下代码所示 SELECT * FROM deployment WHERE name LIKE concat(concat('%',#{queryMessage}), ...
- 如何快捷地使用ChemBio 3D检查结构信息
ChemBio 3D是一款三维分子结构演示软件,能够轻松快捷地进行化学结构的制作和立体旋转.ChemBio 3D Ultra 14作为ChemBio 3D的最新版本可以更加快捷地制作化学结构.本教程将 ...
