Selenium
一、概述
- Web自动化测试工具,可以运行在浏览器,根据指令操作浏览器
- 只是工具,必须与第三方浏览器结合使用
安装:
- Linux:
sudo pip3 install selenium
- Windows:
python -m pip install selenium
phantomjs浏览器
定义:无界面浏览器(又称无头浏览器),在内存中进行页面加载,高效
安装(phantomjs、chromedriver、geckodriver)
Windows:
1、下载对应版本的phantomjs、chromedriver、geckodriver 2、把chromedriver.exe拷贝到python安装目录的Scripts目录下(添加到系统环境变量) # 查看python安装路径: where python 3、验证 cmd命令行: chromedriver # 下载地址 # 查看浏览器版本:右上角-帮助-关于google Chrome # 网站中查看对应版本(notes.txt) chromedriver : 下载对应版本 http://chromedriver.storage.googleapis.com/index.html
Linux:
1、下载后解压 tar -zxvf geckodriver.tar.gz 2、拷贝解压后文件到 /usr/bin/ (添加环境变量) sudo cp geckodriver /usr/bin/ 3、更改权限 cd /usr/bin/ chmod 777 geckodriver
sudo apt-get install phantomjs
测试:
from selenium import webdriver brower = webdirver.Chrome()
打开浏览器,跳转到
百度
并搜索泰勒斯威夫特
from selenium import webdriver import time browser = webdriver.Chrome() browser.get('http://www.baidu.com/') # 向搜索框(id kw)输入 泰勒斯威夫特 ele = browser.find_element_by_xpath('//*[@id="kw"]') ele.send_keys('泰勒斯威夫特') time.sleep(1) # 点击 百度一下 按钮(id su) su = browser.find_element_by_xpath('//*[@id="su"]') su.click() # 截图 browser.save_screenshot('霉霉.png') # 关闭浏览器 browser.quit()
二、基本用法
browser.page_cource
返回响应内容
1. 浏览器方法
browser = webdriver.Chrome(executable_path='path') browser.get(url) browser.page_source # 查看响应内容 browser.page_source.find('字符串') # 从html源码中搜索指定字符串,没有找到返回:-1 browser.quit() # 关闭浏览器
2. 节点查找
2.1 单节点
browser.find_element_by_id('') browser.find_element_by_name('') browser.find_element_by_class_name('') browser.find_element_by_xpath('')
2.2 多节点
browser.find_elements_by_id('') browser.find_elements_by_name('') browser.find_elements_by_class_name('') browser.find_elements_by_xpath('')
3.节点操作
ele.send_keys('') # 搜索框发送内容 ele.click() # 点击 ele.text # 获取文本内容 ele.get_attribute('src') # 获取属性值
4.无界面设置
from selenium import webdriver options = webdriver.ChromeOptions() # 添加无界面参数 options.add_argument('--headless') browser = webdriver.Chrome(options=options) browser.get('http://www.baidu.com/') browser.save_screenshot('baidu.png')
5. 页面下拉
其实质就是运行JS代码
self.browser.execute_script( 'window.scrollTo(0,document.body.scrollHeight)' )
6. 切换页面
适用页面:页面中点开链接出现新的页面,但是浏览器对象browser还是之前页面的对象
应对方案:
# 获取当前所有句柄(窗口) all_handles = browser.window_handles # 切换到新的窗口 browser.switch_to_window(all_handles[1])
来源:https://www.cnblogs.com/chancey/p/11540164.html