selenium自动化测试之checkbox和下拉框处理

checkbox批量勾选

1.环境准备javascript

下面代码用记事本编辑,保存为.html格式,并放在python项目同一目录下。(此段代码非原创,来源某课程)css

 

 

<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
<title>Checkbox</title>
<script type="text/javascript" async="
" src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<link href="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/css/bootstrap-combined.min.css"
rel="stylesheet" />
<script src="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/js/bootstrap.min.js"></script>
</head>
<body>
<h3>checkbox</h3>
<div class="well">
<form class="form-horizontal">
<div class="control-group">
<label class="control-label" for="c1">checkbox1</label>
<div class="controls">
<input type="checkbox" id="c1" />
</div>
</div>
<div class="control-group">
<label class="control-label" for="c2">checkbox2</label>
<div class="controls">
<input type="checkbox" id="c2" />
</div>
</div>
<div class="control-group"><label class="control-label" for="c3">checkbox3</label>
<div class="controls">
<input type="checkbox" id="c3" />
</div>
</div>
</form>
</div>
</body>
</html>
from selenium import webdriver
import time
import os

if __name__ == "__main__":
    firefox_driver = webdriver.Firefox()
    path = "file:///" + os.path.abspath("checkbox.html")  # 获取当前路径下的文件
    firefox_driver.get(path)
    checkboxs = firefox_driver.find_elements_by_css_selector("input[type=checkbox]")  # 这里获取到一组元素,返回list
    time.sleep(2)
    for checkbox in checkboxs:
        checkbox.click()  # 批量勾选
    time.sleep(2)
    firefox_driver.quit()

 

下拉框处理

下拉框处理之SELECT类
须要导入from selenium.webdriver.support.select import Select
a.选择某一项
select_by_index() 经过索引定位
select_by_value() 经过value值定位
select_by_visible_text() 经过文本值定位,即显示在标签中间的值
eg.
Select(firefox_driver.find_element_by_css_selector("select#ShippingMethod")).select_by_visible_text('UPS Next Day Air ==> $12.51')
若是找不到,会抛NoSuchElementException异常
b.获取options信息
options 返回全部选项元素列表
all_selected_options:提供全部被选中选项的元素列表
first_selected_option:提供第一被选中的选项元素?存疑
c.取消选中项
deselect_all             # 取消所有的已选择项
deselect_by_index        # 取消已选中的索引项
deselect_by_value        # 取消已选中的value值
deselect_by_visible_text # 取消已选中的文本值

实例

1.先试下一个平平凡凡的selecthtml

 

 

 方法1.select定位前端

Select(firefox_driver.find_element_by_css_selector("select#ShippingMethod")).select_by_visible_text('UPS Next Day Air ==> $12.51')

方法2.直接定位java

firefox_driver.find_element_by_css_selector("option[value='12.51']").click()

2.若是下拉选择框,不是select标签订义的?python

以百度首页为例jquery

2.1 能够看到鼠标移动到[设置]后,出现选项,可是这并非一个select,鼠标移动到[设置]后,一些属性值也会发生变化。这里如何定位呢?(比较好奇这里的原理,看来前端知识要继续补充)web

 

 

 

firefox_driver = webdriver.Firefox()
    # path = "file://" + os.path.abspath("select.html")  # 获取当前路径下的文件
    # firefox_driver.get(path)
    firefox_driver.get("https://www.baidu.com/")
    time.sleep(2)
    el = firefox_driver.find_element_by_css_selector("a.lb+a.pf")
    ActionChains(firefox_driver).move_to_element(el).perform()
    time.sleep(1)
    # el2 = firefox_driver.find_element_by_css_selector("a.pf hover")  # 这里报错了
    # el2.find_element_by_class_name("setpref").click()  
    firefox_driver.find_element_by_link_text("搜索设置").click()
    time.sleep(3)
    firefox_driver.quit()

2.2 百度首页输入框的这个下拉选择框,如何选择历史记录或者输入一部份内容后,选择检索出来的选择列表框呢?留个疑问,明天继续~ajax

 

 

 

相关文章
相关标签/搜索