三、Selenium

1.Selenium

1. 什么是 selenium
(1) Selenium 是一个用于 Web 应用程序测试的工具。
(2) Selenium 测试直接运行在浏览器中,就像真正的用户在操作一样。
(3)支持通过各种 driver (FirfoxDriver, IternetExplorerDriver OperaDriver ChromeDriver )驱动真实浏览器完成测试。
(4) selenium 也是支持无界面浏览器操作的。
2. 为什么使用 selenium
模拟浏览器功能,自动执行网页中的 js 代码,实现动态加载
3. 如何安装 selenium
(1)操作谷歌浏览器驱动下载地址 Chrome
(2)谷歌驱动和谷歌浏览器版本之间的映射表
http : // blog . csdn . net / huilan_same / article / details / 51896672
(3)查看谷歌浏览器版本
谷歌浏览器右上角 ‐‐> 帮助 ‐‐> 关于
(4) pip install selenium
4. selenium 的使用步骤?
(1)导入: from selenium import webdriver
(2)创建谷歌浏览器操作对象:
        path = 谷歌浏览器驱动文件路径
        browser = webdriver . Chrome ( path )
(3)访问网址
        url = 要访问的网址
        browser . get ( url )

# (1)导入selenium
from selenium import webdriver
from selenium.webdriver.chrome.service import Service

# (2) 创建浏览器操作对象
# 不自动关闭浏览器
option = webdriver.ChromeOptions()
option.add_experimental_option("detach", True)

# 将option作为参数添加到Chrome中
driver = webdriver.Chrome(options=option)


# (3)访问网站
url = 'https://www.jd.com/'

driver.get(url)

# page_source 获取网页源码
content = driver.page_source
print(content)
4 1 selenium 的元素定位?
        元素定位:自动化要做的就是模拟鼠标和键盘来操作来操作这些元素,点击、输入等等。操作这些元素前首先 要找到它们,WebDriver 提供很多定位元素的方法
方法:
        1. find_element_by_id
                eg : button = browser . find_element_by_id ( 'su' )
        2. find_elements_by_name
                eg : name = browser . find_element_by_name ( 'wd' )
        3. find_elements_by_xpath
                eg : xpath1 = browser . find_elements_by_xpath ( '//input[@id="su"]' )
        4. find_elements_by_tag_name
                eg : names = browser . find_elements_by_tag_name ( 'input' )
        5. find_elements_by_css_selector
                eg : my_input = browser . find_elements_by_css_selector ( '#kw' )[ 0 ]
        6. find_elements_by_link_text
                eg : browser . find_element_by_link_text ( " 新闻 " )

from selenium import webdriver
from selenium.webdriver.chrome.service import  Service
from selenium.webdriver.common.by import By

# 不自动关闭浏览器
option = webdriver.ChromeOptions()
option.add_experimental_option('detach',True)

# 将option作为参数添加到Chrome中
browser = webdriver.Chrome(options=option)

# 设置浏览器大小:全屏
browser.maximize_window()
# 访问网站
url = 'https://www.baidu.com'
browser.get(url)

# 元素定位

# 根据id来找到对象
# button = browser.find_element(by=By.ID,value='su')

# 根据name来找到对象
# button = browser.find_element(by=By.NAME,value='wd')


# XPath还可以使用元素的属性值来定位。//input 表示当前页面某个 input 标签,[@id='kw'] 表示这个元素的 id 值是 kw。
# button = browser.find_element(by=By.XPATH,value="//input[@id='su']")

# tag_name 定位即通过标签名称定
# button = browser.find_element(by=By.TAG_NAME,value='input')


#  以id定位语法结构为:#加 id 名,实现CSS定位,
# button = browser.find_element(by=By.CSS_SELECTOR,value='#su')


# 通过link_text定位,点击‘新闻’超链接
# button = browser.find_element(by=By.LINK_TEXT,value='新闻')

# 通过partial_link_text定位,用超链接文字的部分文本来定位元素,类似数据库的模糊查询
# button = browser.find_element(by=By.PARTIAL_LINK_TEXT,value='新')

# print(button)

# 关闭浏览器
browser.close()
4 2 : 访问元素信息
        获取元素属性
                . get_attribute ( 'class' )
        获取元素文本
                . text
        获取标签名
                . tag_name
from selenium import webdriver
from selenium.webdriver.chrome import service
from selenium.webdriver.common.by import By

option = webdriver.ChromeOptions()
option.add_experimental_option('detach',True)
browser = webdriver.Chrome(option)

browser.maximize_window()

url = 'https://www.baidu.com/'
browser.get(url)

input = browser.find_element(by=By.ID,value='su')


print(input.get_attribute('class'))

print(input.tag_name)

# 获得<>中间的内容</>
print(input.text)

news = browser.find_element(by=By.LINK_TEXT,value='新闻')

print(news)
print(news.text)

browser.close()
4 3 : 交互
        点击 : click ()
        输入 : send_keys ()
        后退操作 : browser . back ()
        前进操作 : browser . forword ()
        模拟JS 滚动 :
                js = 'document.documentElement.scrollTop=100000'
                browser . execute_script ( js ) 执行 js 代码
        获取网页代码:page_source
        退出:browser . quit ()
from selenium import webdriver
from selenium.webdriver.chrome import service
from selenium.webdriver.common.by import By

option = webdriver.ChromeOptions()
option.add_experimental_option('detach',True)

browser = webdriver.Chrome(option)
browser.maximize_window()

url = 'https://www.baidu.com'

browser.get(url)

import time
time.sleep(2)

# 获取文本框的对象
input = browser.find_element(by=By.ID,value='kw')

# 在文本框中输入周杰伦
input.send_keys('周杰伦')

time.sleep(4)

# 获取百度一下的按钮
button = browser.find_element(by=By.ID,value='su')

# 点击一下
button.click()
time.sleep(4)

# 滑到底部
js_bottom = 'document.documentElement.scrollTop=100000'
browser.execute_script(js_bottom)

time.sleep(3)

# 获取下一页的按钮  点击
next = browser.find_element(by=By.XPATH,value='//a[@class="n"]')

next.click()
time.sleep(4)

# 回到上一页
browser.back()
time.sleep(4)

# 回去
browser.forward()
time.sleep(4)

# 退出
browser.quit()

2.Phantomjs

1. 什么是 Phantomjs
(1)是一个无界面的浏览器
(2)支持页面元素查找, js 的执行等
(3)由于不进行 css gui 渲染,运行效率要比真实的浏览器要快很多
2. 如何使用 Phantomjs
(1)获取 PhantomJS . exe 文件路径 path
(2) browser = webdriver . PhantomJS ( path )
(3) browser . get ( url )
扩展:保存屏幕快照 : browser . save_screenshot ( 'baidu.png' )

3.Chrome handless

        Chrome-headless 模式, Google 针对 Chrome 浏览器 59 版 新增加的一种模式,可以让你不打开 UI 界面的情况下 使用 Chrome 浏览器,所以运行效果与 Chrome 保持完美一致。
1. 系统要求:
        Chrome
        Unix \ Linux 系统需要 chrome > = 59
        Windows 系统需要 chrome > = 60
        Python3 .6
        Selenium == 3.4 . *
        ChromeDriver == 2.31
2. 配置:
        from selenium import webdriver
        from selenium . webdriver . chrome . options import Options
        chrome_options = Options ()
        chrome_options . add_argument ( '‐‐headless' )
        chrome_options . add_argument ( '‐‐disable‐gpu' )
        path = r'C:\Program Files (x86)\Google\Chrome\Application\chrome.exe'
        chrome_options . binary_location = path
        browser = webdriver . Chrome ( chrome_options = chrome_options )
        browser . get ( 'http://www.baidu.com/' )
3. 配置封装:
from selenium import webdriver
from selenium.webdriver.chrome import service


option = webdriver.ChromeOptions()


option.add_argument('--headless')  # 设置无窗口模式
option.add_argument('--disable-gpu')  # 禁用gpu加速

browser = webdriver.Chrome(option)
browser.maximize_window()

url = 'https://www.baidu.com'

browser.get(url)

browser.save_screenshot('handless1.png')
作业:京东
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值