2025年Selenium单选框、勾选框、复选框操作详解

Selenium单选框、勾选框、复选框操作详解webdriver 可以很方便的使用 findElement 方法来定位某个特定的对象 不过有时候我们却需要定位一组对象 这时候就需要使用 findElements 方法 1 单选框和多选框 我们可以自己写一个简单的页面 该文件保存格式为名称 html 在操作的过程中我把 html 文件和 python 文件放在了同一级目录下 box

大家好,我是讯享网,很高兴认识大家。

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="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>模拟测试</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 webdriver
import time
import os
driver = webdriver.Chrome(executable_path=r"C:\Users\think\Desktop\chromedriver")
#os.getcwd():当前Python文件所在的路径,没有\需要加上os.sep
file_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 webdriver
import time
import os
driver = 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="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>
<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 进行勾选 # 获取对应的element time.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('男')
小讯
上一篇 2025-01-18 19:38
下一篇 2025-01-26 16:24

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/32374.html