目录
[1. Selenium](#1. Selenium)
[1.1 Selenium是啥](#1.1 Selenium是啥)
[1.2 安装chrom Driver](#1.2 安装chrom Driver)
[1.3 selenium 使用](#1.3 selenium 使用)
[1.4 selenium元素定位](#1.4 selenium元素定位)
[1.5 访问元素信息](#1.5 访问元素信息)
[1.6 交互](#1.6 交互)
[2. Phantomjs、Chrom handless](#2. Phantomjs、Chrom handless)
1. Selenium
1.1 Selenium是啥
自动化Web浏览器操作
主要用于Web应用程序的测试
支持多操作系统、多浏览器(dirver)
支持无界面浏览器操作(自动交互)
1.2 安装chrome Driver
需要注意 driver 与 chrom版本对应
1.3 selenium 使用
python
# (1)导入selenium
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
# (2) 创建浏览器操作对象
path = 'chromedriver.exe'
# 创建 Service 对象
service = Service(executable_path=path)
# 创建 WebDriver 对象
browser = webdriver.Chrome(service=service)
# (3)访问网站
url = 'https://www.jd.com/'
browser.get(url)
# page_source获取网页源码
content = browser.page_source
print(content)
1.4 selenium元素定位
selenium3和selenium4的语法有一定不同
button = browser.find_element(By.ID, 'chat-submit-button')
button2 = browser.find_elements(By.ID, 'chat-submit-button')
ID = "id"XPATH = "xpath"
LINK_TEXT = "link text"
PARTIAL_LINK_TEXT = "partial link text"
NAME = "name"
TAG_NAME = "tag name"
CLASS_NAME = "class name"
CSS_SELECTOR = "css selector"
python
button = browser.find_element(By.ID, 'chat-submit-button')
button2 = browser.find_element(By.NAME, 'wd')
button3 = browser.find_elements(By.TAG_NAME, 'input')
button4 = driver.find_element(By.CLASS_NAME, "btn-primary")
button5 = browser.find_element(By.LINK_TEXT, '直播')
button6 = browser.find_element(By.PARTIAL_LINK_TEXT, '直')
button7 = browser.find_elements(By.XPATH, '//button[@id="chat-submit-button"]')
button8 = browser.find_element(By.CSS_SELECTOR, '#chat-submit-button')
print(button)
1.5 访问元素信息
获取元素属性
.get_attribute('class')
获取元素文本
.text
获取标签名
.tag_name
python
input = browser.find_element(By.ID, 'chat-textarea')
# 获取标签的属性
print(input.get_attribute('class'))
# 获取标签的名字
print(input.tag_name)
# 获取元素文本
a = browser.find_element(By.LINK_TEXT,'新闻')
print(a.text)
1.6 交互
点击:click()
输入:send_keys()
后退操作:browser.back()
前进操作:browser.forword()
模拟JS滚动:
js='document.documentElement.scrollTop=100000'
browser.execute_script(js) 执行js代码
获取网页代码:page_source
退出:browser.quit()
2. Phantomjs、Chrome handless
无界面浏览器。不进行css渲染,运行效率高。
Phantomjs基本被淘汰,建议使用Chrom handless
python
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
def share_browser():
# 替换为你的 chromedriver 路径
path = 'chromedriver.exe' # Windows 示例,如 chromedriver.exe
service = Service(executable_path=path)
options = webdriver.ChromeOptions()
options.add_argument('--headless') # 无头模式
options.add_argument('--disable-gpu')
options.add_argument('--no-sandbox')
# 创建浏览器实例
browser = webdriver.Chrome(service=service, options=options)
return browser
browser = share_browser()
url = 'https://www.baidu.com'
browser.get(url)
browser.save_screenshot('baidu22.png')