2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > Selenium单选框 勾选框 复选框操作详解

Selenium单选框 勾选框 复选框操作详解

时间:2019-11-23 02:14:14

相关推荐

Selenium单选框 勾选框 复选框操作详解

webdriver可以很方便的使用findElement方法来定位某个特定的对象,不过有时候我们却需要定位一组对象,这时候就需要使用findElements方法。

1、单选框和多选框

我们可以自己写一个简单的页面,该文件保存格式为名称.html,在操作的过程中我把html文件和python文件放在了同一级目录下;

box.html代码如下:

<html><head><meta http-equiv="content-type" content="text/html;charset=utf-8" /><title>Checkbox</title><script type="text/javascript" async="" src="/ajax/libs/jquery/1.9.1/jquery.min.js"></script><link href="/twitter-bootstrap/2.3.2/css/bootstrap-combined.min.css" rel="stylesheet" /><script src="/twitter-bootstrap/2.3.2/js/bootstrap.min.js"></script></head><body><h3>模拟测试</h3><div class="well"><form class="form-horizontal"><div class="control-group"><label class="control-label" for="c1">喝酒</label><div class="controls"><input type="checkbox" id="c1" /></div></div><div class="control-group"><label class="control-label" for="c2">上网</label><div class="controls"><input type="checkbox" id="c2" /></div></div><div class="control-group"><label class="control-label" for="c3">睡觉</label><div class="controls"><input type="checkbox" id="c3" /></div></div><div class="control-group"><label class="control-label" for="r">男</label><div class="controls"><input type="radio" id="r1" /></div></div><div class="control-group"><label class="control-label" for="r">女</label><div class="controls"><input type="radio" id="r2" /></div></div></form></div></body></html>

python代码如下:

from selenium import webdriverimport timeimport osdriver = webdriver.Chrome(executable_path=r"C:\Users\think\Desktop\chromedriver")#os.getcwd():当前Python文件所在的路径,没有\需要加上os.sepfile_path = os.getcwd()+os.sep+'box.html'print(file_path)driver.get(file_path)# 选择页面上所有的input,然后从中过滤出所有的checkbox并勾选之inputs = driver.find_elements_by_tag_name('input')for input in inputs:if input.get_attribute('type') == 'checkbox':input.click()time.sleep(2)driver.quit()

学到这个阶段的同学应该也都已经对CSS选择器有所了解,下面我们使用CSS选择器来实现和上述一样的效果,代码如下:

from selenium import webdriverimport timeimport osdriver = webdriver.Chrome(executable_path=r"C:\Users\think\Desktop\chromedriver")file_path = os.getcwd()+os.sep+'box.html'print(file_path)driver.get(file_path)checkboxs = driver.find_elements_by_css_selector('input[type="checkbox"]')for checkbox in checkboxs:checkbox.click()time.sleep(3)

如果想要取消最后一个勾选可以加上代码:driver.find_elements_by_css_selector('input[type="checkbox"]').pop().click();

上面代码只演示了多选框,如果想要操作单选框,把checkbox改成radio即可;

有些同学会提出疑问,想要取消第一个第二个该如何操作呢,我的想法是用is_selected方法来获取选择的状态,如果true,就再次点击一下;如果有些同学有更好的解决方法,欢迎留言!

2、复选框

和上述操作一样,为了方便演示,先编写一个html文件:

<html><head><meta http-equiv="content-type" content="text/html;charset=utf-8" /><title>Checkbox</title><script type="text/javascript" async="" src="/ajax/libs/jquery/1.9.1/jquery.min.js"></script><link href="/twitter-bootstrap/2.3.2/css/bootstrap-combined.min.css" rel="stylesheet" /><script src="/twitter-bootstrap/2.3.2/js/bootstrap.min.js"></script></head><p>选择您喜爱的车</p><select id="multi" multiple><option value="benc">奔驰S300</option><option value="yage">雅阁</option><option value="BMW" selected="selected">宝马</option><option value="aodi">奥迪</option></select><p>选择性别</p><select id="single"><option value="male">男</option><option value="female" selected="selected">女</option></select>

python编写需要先导如Select类:from selenium.webdriver.support.ui import Select;注意Select类只适用于元素必须是select类型的;

# 先使用deselect_all把勾选的全部去掉# 然后在用select_by_visible_text 进行勾选# 获取对应的elementtime.sleep(2)select = Select(driver.find_element_by_xpath('//*[@id="multi"]'))#先去掉所有选择的项time.sleep(2)select.deselect_all()#然后选择time.sleep(2)select.select_by_visible_text('雅阁')select.select_by_visible_text('奥迪')# 如果是单选框就直接用select.select_by_visible_text('男')

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。