
作用:web自动化测试工具
Python 的 selenium 库是一个自动化测试工具,用于模拟用户在浏览器中的操作。它可以控制浏览器加载网页、点击按钮、填写表单、执行JavaScript代码等。selenium 支持多种浏览器,包括Chrome、Firefox、Internet Explorer等,并且能够处理Ajax、弹出窗口等动态内容。它广泛应用于网页测试、爬虫和自动化网页交互,是自动化Web应用程序测试和爬取动态网页数据的强大工具。
pip install selenium

处理安装了selenium,还安装了 attrs-24.2.0 certifi-2024.8.30 exceptiongroup-1.2.2 h11-0.14.0 idna-3.10 outcome-1.3.0.post0 pysocks-1.7.1 selenium-4.25.0 sniffio-1.3.1 sortedcontainers-2.4.0 trio-0.26.2 trio-websocket-0.11.1 typing_extensions-4.12.2 urllib3-2.2.3 websocket-client-1.8.0 wsproto-1.2.0
| 包 | 包中文名 | 释义 | 跳转 |
|---|---|---|---|
| attrs-24.2.0 | / | attrs是一个Python库,用于创建具有自动属性验证、文档生成和初始化的类。 | / |
| certifi-2024.8.30 | 证书库 | certifi是一个Python库,提供Mozilla的CA证书Bundle,用于HTTPS请求的SSL证书验证 | / |
| exceptiongroup-1.2.2 | / | ExceptionGroup是Python 3.11引入的,用于将多个异常组合成一个异常对象。 | / |
| h11-0.14.0 | / | h11是Python的HTTP/1.1协议的实现库,用于构建HTTP服务器和客户端。 | / |
| idna-3.10 | / | idna是一个Python库,用于支持国际化域名(IDNA)协议,将域名从Unicode转换为ASCII兼容编码(ACE)。 | / |
| outcome-1.3.0.post0 | / | outcome 是一个 Python 库,用于捕获 Python 函数调用的结果 | / |
| pysocks-1.7.1 | 请求库 | PySocks是一个Python库,用于通过SOCKS代理发送网络流量,支持SOCKS4、SOCKS5和HTTP代理协议。 | / |
| selenium-4.25.0 | / | Selenium是一个用于Web应用程序自动化测试的工具 | / |
| sniffio-1.3.1 | 异步监控库 | sniffio是一个Python库,用于检测当前代码运行的异步环境,支持包括asyncio、trio等在内的多种异步框架。 | / |
| sortedcontainers-2.4.0 | 排序库 | SortedContainers 是一个Python库,提供自动排序的列表、字典、集合等数据结构。 | / |
| trio-0.26.2 | 异步库 | Trio是一个Python库,用于编写异步并发代码。强调正确性和可预测性,避免了常见的异步编程陷阱。 | / |
| trio-websocket-0.11.1 | / | Trio-websocket 是一个用于 Trio 异步框架的 WebSocket 客户端和服务器实现库 | / |
| typing_extensions-4.12.2 | / | typing_extensions是Python的类型提示扩展库,支持在旧版Python上使用新类型系统特性,允许实验性特性的探索 | / |
| urllib3-2.2.3 | / | urllib3是一个强大的、用户友好的Python HTTP客户端库 | urllib3 http请求库 |
| websocket-client-1.8.0 | / | websocket-client是一个Python库,用于建立和维护与WebSocket服务器的连接。 | / |
| wsproto-1.2.0 | WebSocket通信库 | wsproto是一个纯Python实现的WebSocket协议栈,旨在提供灵活的WebSocket通信支持。 | / |
android (package)blackberry (package)chrome (package)common (package)edge (package)firefox (package)ie (package)opera (package)phantomjs (package)remote (package)safari (package)support (package)webkitgtk (package)
PhantomJS可以用用于页面自动化、网络监测、网页截屏,以及无界面测试
但是已经不更新了
谷歌驱动(chromedriver)下载地址:https://chromedriver.com/http://chromedriver.storage.googleapis.com/index.html火狐驱动下载路径(GeckoDriver):https://github.com/mozilla/geckodriver/releases
from selenium import webdriverbrowser = webdriver.Chrome()browser = webdriver.Firefox()driver = webdriver.Chrome(executable_path="/path/to/chromedriver")
from selenium.webdriver.chrome.options import Optionschrome_options = Options()chrome_options.add_argument("--headless") # 确保在无界面模式下运行driver = webdriver.Chrome(options=chrome_options)
from selenium import webdriver # 导入库browser = webdriver.Chrome() # 声明浏览器url = 'https:www.baidu.com'browser.get(url) # 打开浏览器预设网址print(browser.page_source) # 打印网页源代码browser.close() # 关闭当前浏览器窗口browser.quit() # 关闭浏览器进程
import osfrom selenium import webdriver # 导入库browser = webdriver.Chrome() # 声明浏览器path = os.getcwd()url = 'file://'+path + "/aa.html"# file://C:\Users\xxx\Desktop\tt/aa.htmlbrowser.get(url) # 打开浏览器预设网址print(browser.page_source) # 打印网页源代码browser.close() # 关闭当前浏览器窗口browser.quit() # 关闭浏览器进程
from selenium.webdriver.support import expected_conditions as ECWebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID,"xx"),message=""))
driver:webdriver的驱动;
timeout:最长超时时间,默认以秒为单位;
poll_frequency:休眠时间(步长)的间隔,检测间隔时间,默认0.5s;
ignored_exceptions: 超时后的异常信息,默认情况下抛 “NoSuchElementException”异常;
超过设置时间,抛出TimeoutException异常
browser.find_element_by_name('a')browser.find_element_by_id('a')browser.find_element_by_xpath('a') # (可以直接copy)browser.find_element_by_link_text('a')browser.find_element_by_partial_link_text('a')browser.find_element_by_tag_name('a')browser.find_element_by_class_name('a')browser.find_element_by_css_selector('a')
from selenium.webdriver.common.by import By # 导入browser.find_element(By.ID, 'a')
# 对比上面element多个sbrowser.find_elements_by_name('a')browser.find_elements_by_id('a')browser.find_elements_by_xpath('a') # (可以直接copy)browser.find_elements_by_link_text('a')browser.find_elements_by_partial_link_text('a')browser.find_elements_by_tag_name('a')browser.find_elements_by_class_name('a')browser.find_elements_by_css_selector('a')
from selenium.webdriver.common.by import By # 导入browser.find_elements(By.CSS_SELECTOR,'.service')
Iuput.send_keys() # 找到Iuput元素后Iuput.clear() # 找到Iuput元素后清除button.click() # 找到button元素后点击print(a.text) # 找到a元素后获取文本值
# 2.定位到要悬停的元素element= driver.find_element_by_xpath("//div[@data-hover-cls='dp-hover icon-btn-arrow-2-h-parent']")# 3.对定位到的元素执行鼠标悬停操作ActionChains(driver).move_to_element(element).perform()