python 自动化 selenium 入门
Selenium 创建基于浏览器的强大回归自动化套件和测试。而要控制和驱动实际的浏览器浏览器,需要下载与浏览器对应品牌和版本的 WebDriver 驱动程序。比如 chrome 和 edge 浏览器分别对应: chromedriver.exe 和 msedgedriver.exe
如果你不想手动下载,也可以安装 webdriver-manager 自动下载并管理 webdriver。为了方便,我们选择安装 webdriver-manager 工具包。
完整教程,参考官方文档 : 概述 | Selenium
安装依赖:
pip install selenium pip install webdriver-manager
入门示例:
1 from selenium.webdriver.chrome.service import Service as ChromeService 2 from webdriver_manager.chrome import ChromeDriverManager 3 from selenium import webdriver 4 5 service = ChromeService(ChromeDriverManager().install()) # 自动下载当前浏览器对应驱动 6 driver = webdriver.Chrome(service=service) 7 # 如果手动下载 webdriver 驱动 8 # driver = webdriver.Chrome(executable_path=r'd:\path\to\webdriver\chromedriver.exe') 9 10 driver.get("https://www.selenium.dev/selenium/web/web-form.html") # 访问网站
完整示例:
1 from selenium import webdriver 2 from selenium.webdriver.chrome.options import Options 3 from selenium.webdriver.chrome.service import Service as ChromeService 4 from webdriver_manager.chrome import ChromeDriverManager 5 from selenium.webdriver.common.by import By 6 from selenium.webdriver import Keys, ActionChains 7 8 options = Options() 9 options.add_experimental_option("detach", True) # 脚本运行结束后保持浏览器的打开 10 options.add_experimental_option('excludeSwitches', ['enable-automation']) # 排除的参数, 重新打开弹出窗口 11 12 service = ChromeService(ChromeDriverManager().install()) 13 driver = webdriver.Chrome(service=service, options=options) 14 driver.get("https://www.selenium.dev/selenium/web/web-form.html") 15 16 # driver.title # 网站标题 17 # driver.current_url # 当前 URL 18 # driver.back() # 后退 19 # driver.forward() # 前进 20 # driver.refresh() # 刷新 21 22 driver.implicitly_wait(0.5) # 等待 0.5 秒 23 24 text_box = driver.find_element(by=By.NAME, value="my-text") # 查找 name="my-text" 的元素 25 26 # 标准 css 选择器规范 27 submit_button = driver.find_element(by=By.CSS_SELECTOR, value="button") 28 # driver.find_element(By.CSS_SELECTOR, "#fruits .tomatoes") 29 # driver.find_element(By.CSS_SELECTOR, '[name="q"]') 30 31 text_box.send_keys("Selenium") # 向输入框发送内容 32 submit_button.click() # 单击按钮 33 34 message = driver.find_element(by=By.ID, value="message") 35 message.text # innerHTML 文本内容 36 37 # 执行连贯的动作 38 driver.get('https://selenium.dev/selenium/web/mouse_interaction.html') 39 clickable = driver.find_element(By.ID, "clickable") 40 ActionChains(driver).move_to_element(clickable).pause(1).click_and_hold().pause(1).send_keys("abc").perform() 41 42 43 driver.quit() # 退出