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实现一个简单的缓存方法
缓存是在web开发中经常用到的,将程序经常使用到或调用到的对象存在内存中,或者是耗时较长但又不具有实时性的查询数据放入内存中,在一定程度上可以提高性能和效率.下面我实现了一个简单的缓存,步骤如下. 创 ...
- 【F12】网络面板
使用网络面板了解请求和下载的资源文件并优化网页加载性能 (1)网络面板基础 测量资源加载时间 使用 Network 面板测量您的网站网络性能. Network 面板记录页面上每个网络操作的相关信息,包 ...
- Spring bean的初始化及销毁
Spring bean的几个属性:scope.init-method.destroy-method.depends-on等. Scope 在Spring容器中是指其创建的Bean对象相对于其他Bean ...
- 第三百一十节,Django框架,模板语言
第三百一十节,Django框架,模板语言 模板语言就是可以将动态数据在html模板渲染的语言 一.接收值渲染 locals()函数,写在请求响应render()函数里,可以将逻辑处理函数里的变量传到h ...
- Web 浏览
Web 浏览为了更好地了解 CGI 的概念,让我们点击一个超链接,浏览一个特定的网页或 URL,看看会发生什么. 您的浏览器联系上 HTTP Web 服务器,并请求 URL,即文件名.Web 服务器将 ...
- Asp.Net之后台载入JS和CSS
在Asp.Net开发时,用到的JS库.通用的CSS等,在很多页面都会用到,而每次都须要手动引入.相当麻烦.并且有时一旦忘了引用,还得找半天才干找到问题.那有没有什么办法可以一劳永逸的呢?答案是有的. ...
- QMainWindow + QtabWidget 实现 菜单栏 和 标签
from PyQt5.QtWidgets import ( QMainWindow, QMenu, QAction, QTabWidget) if __name__ == '__main__': im ...
- Z字形扫描矩阵
问题描述 在图像编码的算法中,需要将一个给定的方形矩阵进行Z字形扫描(Zigzag Scan).给定一个n×n的矩阵,Z字形扫描的过程如下图所示: 对于下面的4×4的矩阵, 1 5 3 9 3 7 5 ...
- 关于C++中using namespace std
原文链接:http://www.kuqin.com/language/20080107/3532.html <iostream>和<iostream.h>是不一样,前者没有后缀 ...
- js 文件下载
工程WebApi: 点击按钮执行的handler exportClick() { var profile = { content: this.state.profile, type: MappingT ...
