网站建设费用及预算,谷歌网站推广优化,16种营销模式,狼群神马手机免费影院三、Selenium
1.初识Selenium
1.1什么是Selenium#xff1f;
Selenium是一个浏览器自动化测试框架#xff0c;是一款用于Web应用程序测试的工具。框架底层使用JavaScript模拟真实用户对浏览器进行操作。测试脚本执行时#xff0c;浏览器自动按照脚本代码做出点击#xf…三、Selenium
1.初识Selenium
1.1什么是Selenium
Selenium是一个浏览器自动化测试框架是一款用于Web应用程序测试的工具。框架底层使用JavaScript模拟真实用户对浏览器进行操作。测试脚本执行时浏览器自动按照脚本代码做出点击输入打开验证等操作就像真实用户所做的一样从终端用户的角度测试应用程序。使浏览器兼容性测试自动化成为可能尽管在不同的浏览器上依然有细微的差别。使用简单可使用JavaPython等多种语言编写用例脚本。
1.2 Selenium的准备
以Chrome为例
首先在pycharm中安装selenium软件包版本不要太高不然会闪退测试是3.5版本。补后续更新到selenium3.10运行无影响
然后http://chromedriver.storage.googleapis.com/index.html网站中找到对应版本的chromedriver下载win32就可以了解压之后复制粘贴到项目文件夹的一级目录下。 准备工作完成。
2. Selenium的使用
2.1为什么要使用Selenium
先看下面一段代码
import urllib.requesturl https://www.jd.comresponse urllib.requst.urlopen(url)content response.read().decode(utf-8)print(content)在控制台搜索J_seckill(京东秒杀模块的id)无匹配字段原因是模拟浏览器获取不了京东秒杀的内容因为网站检测到了是模拟浏览器所以需要用selenium。
2.2 Selenium的基本使用
selenium的使用会调用chrome所以当弹出页面后需要在设置中将默认搜索引擎改成百度。
获取京东网站中的京东秒杀源码
# 导入selenium
from selenium import webdriver# 创建浏览器对象
path chromedriver.exe
browser webdriver.Chrome(path)# 访问网站
url https://www.jd.combrowser.get(url)# page_source获取网页源码
content browser.page_source
print(content)在控制台搜索J_seckill可以看到京东秒杀模块。
2.3 Selenium的元素定位
from selenium import webdriverurl https://www.jd.compath chromedriver.exe
browser webdriver.Chrome(path)# 元素定位
# 根据id找到对象
id browser.find_element_by_id(su)
print(id)
# 根据标签属性的属性值
name browser.find_element_by_name(wd)
print(name)
# 根据xpath语句来获取对象
xpath browser.find_element_by_xpath(//input[idsu])
print(xpath)
# 根据标签的名字获取对象
button browser.find_element_by_tag_name(input)
print(button)
# 使用bs4的语法获取对象
bs browser.find_element_by_css_selector(#su)
print(bs)
# a标签
text browser.find_element_by_link_text(新闻)
print(text)2.4 Selenium获取元素信息
以百度首页为例
from selenium import webdriverpath chromedriver.exe
browser webdriver.Chrome(path)url http://www.baidu.com
browser.get(url) # 访问网站# 根据id内容获取标签对象
input browser.find_element_by_id(su) # 获取标签的属性
print(input.get_attribute(class))# 获取标签的名字
print(input.tag_name)# 获取元素文本
a browser.find_element_by_link_text(新闻)
print(a.text)2.5 Selenium的交互
模拟点击行为进而操作浏览器
from selenium import webdriver# 创建浏览器对象
path chromedriver.exe
browser webdriver.Chrome(path)# url
url https://www.baidu.com
browser.get(url)import time
# 睡眠两秒 防止操作过快被检测出来时爬虫被封ip
time.sleep(2)# 获取文本框的对象
input browser.find_element_by_id(kw)# 在文本框中输入周杰伦
input.send_keys(周杰伦)time.sleep(2)# 获取百度一下的按钮
button browser.find_element_by_id(su)# 点击按钮
button.click()time.sleep(2)# 滑到底部
js_bottom document.documentElement.scrollTop100000
browser.execute_script(js.bottom)time.sleep(2)# 获取下一页的按钮
next browser.find_element_by_xpath(//a[classn])# 点击下一页
next.click()time.sleep(2)# 回到上一页
browser.back()time.sleep(2)# 再回去
browser.forward()time.sleep(3)browser.quit()Phantomjs
1.初识Phantomjs
1.1什么是Phantomjs
Phantomjs是一个无界面浏览器支持页面元素查找js的执行等由于不进行css和gui渲染运行效率比真实的浏览器快的多。
1.2如何使用Phantomjs
和使用Chrome类似
即获取PhantomJs.exe的文件路径
browser webdriver.PhantomJs(path)
browser.get(url)
可以使用屏幕快照进行验证浏览器是否正常运行。
2. Phantomjs的使用
以百度搜索关键词为例
from selenium import webdriverurl https://www.baidu.compath phantomjs.exebrowser webdriver.PhantomJS(path)browser.get(url)browser.save_screenshot(baidu.png) # 保存快照import time# 获取百度搜索的搜索文本框
input browser.find_element_by_id(kw)
input.send_keys(昆凌) # 输入关键字‘昆凌’time.sleep(2) # 睡眠两秒browser.save_screenshot(kunling.png)注1phantonmjs因为某些原因已经停止更新所以新版本的selenium不支持phantomjs这里使用的是selenium3.5.0 所以现在都是使用handless 2当selenium更新到3.10时输出窗口会出现“ UserWarning: Selenium support for PhantomJS has been deprecated, please use headless versions of Chrome or Firefox instead warnings.warn(Selenium support for PhantomJS has been deprecated, please use headless ’ ” 警告不过不影响运行结果。 Chrome handless
1.初识Chrome handless
1.1什么是Chrome handless
Chrome-headless 模式 Google 针对 Chrome 浏览器 59版 新增加的一种模式可以让你不打开UI界面的情况下 使用 Chrome 浏览器所以运行效果与 Chrome 保持完美一致。
1.2使用需求
1.系统要求
Chrome
Unix\Linux 系统需要 chrome 59
Windows 系统需要 chrome 60
Python3.6
Selenium3.4.*
ChromeDriver2.31
2.配置
from selenium.webdriver.chrome.options
import Optionsfrom selenium.webdriver.chrome.options import Options chrome_options Options() chrome_options.add_argument(‐‐headless) chrome_options.add_argument(‐‐disable‐gpu) path rC:\Program Files (x86)\Google\Chrome\Application\chrome.exe chrome_options.binary_location path browser webdriver.Chrome(chrome_optionschrome_options) browser.get(http://www.baidu.com/)
2. Chrome handless的使用
# 无界面的浏览器调用方法
from selenium import webdriver
from selenium.webdriver.chrome.options import Options# 封装的handless
def share_browser():chrome_options Options()chrome_options.add_argument(--headless)chrome_options.add_argument(--disable-gpu)chrome_options.add_argument(--window-size1920,1080) # 设置窗口的大小driver webdriver.Chrome(optionschrome_options)# path 是Chrome浏览器的文件路径path rC:\Program Files\Google\Chrome\Application\chrome.exechrome_options.binary_location pathbrowser webdriver.Chrome(chrome_optionschrome_options)return browserbrowser share_browser()url https://www.baidu.combrowser.get(url)browser.save_screenshot(百度.png)注未解决的问题无界面浏览器还是出现了界面现已解决原因是selenium版本太低需更新到3.10