Selenium+Browser强大的组合拳去攻破反爬机制;
Selenium是自动化测试的主流框架
Selenium-IDE可以实现QTP的操作
Browser Driver
浏览器的驱动程序,用于驱动浏览器响应程序代码
驱动下载
Safari - 不需要装驱动,只需要在菜单栏中开发
选项中打开允许远程自动化
即可。
定义 :无界面浏览器(无头浏览器)
特点
Phantomjs 已经被Selenium
废弃。请使用无头浏览器替代,详见下面的chromedriver 设置无界面模式
Selenium support for PhantomJS has been deprecated, please use headless
- 定义 :Web自动化测试工具,应用于Web自动化测试
- 特点
- 根据指定命令操作浏览器,让浏览器自动加载页面
- 只是工具,不支持浏览器功能,只能与第三方浏览器结合使用
- 安装
1 2 3
| Windows cmd :python -m pip install selenium Anconda prompt : conda install selenium Ubuntu : sudo pip3 install selenium
|
使用
浏览器对象(browser)方法
1 2 3 4 5 6 7 8 9 10
| browser = webdriver.Chrome(executable_path='path')
browser.get(url)
browser.page_source
browser.page_source.find('字符串')
browser.quit()
|
定位节点
单元素查找(1个节点对象)
1 2 3 4
| browser.find_element_by_id('') browser.find_element_by_name('') browser.find_element_by_class_name('') browser.find_element_by_xpath('')
|
多元素查找([节点对象列表])
1 2 3 4
| browser.find_elements_by_id('') browser.find_elements_by_name('') browser.find_elements_by_class_name('') browser.find_elements_by_xpath('')
|
节点对象操作
1 2 3 4 5 6 7 8
| ele.send_keys('')
ele.click()
ele.text
ele.get_attribute('src')
|
输入设备操作
键盘操作
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| from selenium.webdriver.common.keys import Keys
browser = webdriver.Chrome() browser.get('http://www.baidu.com/')
browser.find_element_by_id('kw').send_keys('selenium')
browser.find_element_by_id('kw').send_keys(Keys.SPACE)
browser.find_element_by_id('kw').send_keys(Keys.CONTROL, 'a')
browser.find_element_by_id('kw').send_keys(Keys.CONTROL, 'c')
browser.find_element_by_id('kw').send_keys(Keys.CONTROL, 'v')
browser.find_element_by_id('kw').send_keys(Keys.ENTER)
|
鼠标操作
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| from selenium.webdriver import ActionChains from selenium import webdriver import time
browser = webdriver.Chrome() browser.get('http://www.baidu.com/')
element = browser.find_element_by_xpath('//*[@id="u1"]/a[8]')
actions = ActionChains(browser) actions.move_to_element(element) actions.perform()
time.sleep(1)
browser.find_element_by_link_text('高级搜索').click()
|
chromedriver设置无界面模式
1 2 3 4 5 6 7
| from selenium import webdriver options = webdriver.ChromeOptions()
options.headless = True browser = webdriver.Chrome(options=options) browser.get('http://www.baidu.com/') browser.save_screenshot('baidu.png')
|
简易效果展示
使用 Selenium
+ 浏览器
; 打开百度搜索Python
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| from selenium import webdriver import time
browser = webdriver.Chrome() browser.get('http://www.baidu.com/')
ele = browser.find_element_by_xpath('//*[@id="kw"]') ele.send_keys('Python')
time.sleep(1)
su = browser.find_element_by_xpath('//*[@id="su"]') su.click()
browser.save_screenshot('Python.png')
browser.quit()
|