如何使用Python 3.8和ChromeDriver勾选网页所有复选框
使用Python 3.8 + ChromeDriver选中所有指定复选框
需求说明
需要用Python 3.8配合ChromeDriver实现网页中所有name属性为chk的复选框选中功能,对应已有可运行的JavaScript函数如下:
function selects() { var ele = document.getElementsByName('chk'); for (var i = 0; i < ele.length; i++) { if (ele[i].type == 'checkbox') ele[i].checked = true; } }
Python实现方案
方法1:直接调用页面已有JavaScript函数
如果目标网页已加载上述selects函数,可直接通过ChromeDriver执行该函数:
from selenium import webdriver from selenium.webdriver.chrome.service import Service from webdriver_manager.chrome import ChromeDriverManager # 初始化ChromeDriver(适配Python3.8,自动匹配对应Chrome版本驱动) driver = webdriver.Chrome(service=Service(ChromeDriverManager().install())) # 打开目标网页 driver.get("你的目标网页URL") # 调用页面已有的selects函数 driver.execute_script("selects();") # 完成操作后可关闭浏览器 # driver.quit()
方法2:嵌入JavaScript逻辑执行
如果页面未提前加载selects函数,可将JS逻辑直接写入Python代码执行:
from selenium import webdriver from selenium.webdriver.chrome.service import Service from webdriver_manager.chrome import ChromeDriverManager driver = webdriver.Chrome(service=Service(ChromeDriverManager().install())) driver.get("你的目标网页URL") # 直接执行自定义JS代码选中复选框 driver.execute_script(""" var ele = document.getElementsByName('chk'); for (var i = 0; i < ele.length; i++) { if (ele[i].type == 'checkbox') ele[i].checked = true; } """) # driver.quit()
方法3:使用Selenium原生API实现(无JS依赖)
完全通过Selenium的定位API实现,不依赖JavaScript:
from selenium import webdriver from selenium.webdriver.chrome.service import Service from webdriver_manager.chrome import ChromeDriverManager from selenium.webdriver.common.by import By driver = webdriver.Chrome(service=Service(ChromeDriverManager().install())) driver.get("你的目标网页URL") # 定位所有name为chk的元素 checkboxes = driver.find_elements(By.NAME, 'chk') # 遍历选中所有复选框 for checkbox in checkboxes: if checkbox.get_attribute('type') == 'checkbox' and not checkbox.is_selected(): checkbox.click() # driver.quit()
内容的提问来源于stack exchange,提问作者Stefano
相关产品推荐
相关产品推荐

