radio选择框
可以通过寻找checked="checked"这个属性来确认一下单选框的默认选项
如果要选中某个选项,只需要找到对应属性然后调用click方法点击即可
代码:
from selenium import webdriver
from selenium.webdriver.common.by import By
if __name__ == '__main__':
wd = webdriver.Chrome()
wd.get("https://cdn2.byhy.net/files/selenium/test2.html")
element = wd.find_element(By.CSS_SELECTOR, '#s_radio>[checked="checked"]')
print("当前选中的是:", element.get_attribute("value"))
element = wd.find_element(By.CSS_SELECTOR, '[value="小雷老师"]')
element.click()
input()
执行结果:
CheckBox选择框
为了防止在勾选前已经有默认被勾选的选项,考虑先将所有已经被默认勾选的选择框找出来,然后将其依次点击一遍,确保其处于未点击状态,然后再点击目标按钮。
如果默认被选择了,则是checked="checked"状态
from selenium import webdriver
from selenium.webdriver.common.by import By
if __name__ == '__main__':
wd = webdriver.Chrome()
wd.get("https://cdn2.byhy.net/files/selenium/test2.html")
# 找到所有默认被勾选的多选框,将其去掉,确保初始所有的都未勾选
elements = wd.find_elements(By.CSS_SELECTOR, "#s_checkbox>[type='checkbox'][checked='checked']")
print(len(elements))
for e in elements:
e.click()
element = wd.find_element(By.CSS_SELECTOR, "#s_checkbox>[value='小雷老师']") # 只选择小雷
element.click()
input()
select选择框
select有已经封装好的类Select
Select(传入一个多选框元素)
select_by_value()根据value属性来选择
select_by_index()根据index选择, index从1开始
select_by_visible_text()根据文本内容进行选择
deselect_all()去除所有默认选项
代码:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import Select
if __name__ == '__main__':
wd = webdriver.Chrome()
wd.get("https://cdn2.byhy.net/files/selenium/test2.html")
select = Select(wd.find_element(By.CSS_SELECTOR, "#ss_single"))
select.select_by_value("小雷老师") # 根据value属性选择
select.select_by_index(2) # 根据索引选择,从1开始
select.select_by_visible_text("小雷老师") # 根据文本内容选择
multi_select = Select(wd.find_element(By.CSS_SELECTOR, "#ss_multi"))
multi_select.deselect_all() # 去除所有默认选项
multi_select.select_by_value("小凯老师")
multi_select.select_by_value("小江老师")
input()