hand
_1_5_5
4
返回栏目
1k
9k
1k
1k
5k
1k
1k
1k
1k
3k
2k
1k
0.8k
2k
3k
1k
1k
0.7k
0.9k
1k
0.6k
0.4k
0.4k
0.3k
3k
2k
9k
0.4k
0.4k
0.8k
0.5k
3k
5k
1k
2k
2k
3k
5k
1k
1k
0.4k
0.5k
0.4k
0.6k
0.7k
1k
0.4k
0.3k
4k
0.5k
0k
0.3k
0k
0.2k
0.2k
0.3k
0.9k
0.9k
0.1k
0.9k
0.9k
1k
0.5k
6k
0.3k
0.4k
0.7k
0.6k
8k
3k
1k
1k
1k
1k
0k
2k
1k
1k
0.2k
5k
4k
5k
0.4k
0.8k
1k
1k
1k
0.1k
2k
1k
2k
6k
0k
2k
7k
1k
5k
2k
3k
1k
0k
1k
0.9k
0.4k
0.2k
1k
3k
4k
1k
1k
1k
2k
3k
0.7k
0.3k
0.5k
0.6k
1k
0.9k
3k
0.3k
4k
返回python栏目
作者:
贺及楼
成为作者
更新日期:2024-10-28 10:09:56
作用: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()
python
整章节共122节
快分享给你的小伙伴吧 ~