作用: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 webdriver
browser = webdriver.Chrome()
browser = webdriver.Firefox()
driver = webdriver.Chrome(executable_path="/path/to/chromedriver")
from selenium.webdriver.chrome.options import Options
chrome_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 os
from selenium import webdriver # 导入库
browser = webdriver.Chrome() # 声明浏览器
path = os.getcwd()
url = 'file://'+path + "/aa.html"
# file://C:\Users\xxx\Desktop\tt/aa.html
browser.get(url) # 打开浏览器预设网址
print(browser.page_source) # 打印网页源代码
browser.close() # 关闭当前浏览器窗口
browser.quit() # 关闭浏览器进程
from selenium.webdriver.support import expected_conditions as EC
WebDriverWait(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多个s
browser.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()