目录
1. Selenium
1.1 Selenium是啥
1.2 安装chrom Driver
1.3 selenium 使用
1.4 selenium元素定位
1.5 访问元素信息
1.6 交互
2. Phantomjs、Chrom handless
1. Selenium
1.1 Selenium是啥
自动化Web浏览器操作
主要用于Web应用程序的测试
支持多操作系统、多浏览器(dirver)
支持无界面浏览器操作(自动交互)
1.2 安装chrome Driver
chrome deriver下载
需要注意 driver 与 chrom版本对应
1.3 selenium 使用
# (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"
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
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
from selenium import webdriver
from selenium.webdriver.chrome.service import Servicedef share_browser():# 替换为你的 chromedriver 路径path = 'chromedriver.exe' # Windows 示例,如 chromedriver.exeservice = 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 browserbrowser = share_browser()url = 'https://www.baidu.com'browser.get(url)
browser.save_screenshot('baidu22.png')