定制app开发Python selenium自动化操作Chrome浏览器


活动地址:

文章目录

一、Selenium搭建环境

Selenium定制app开发是一个用于Web定制app开发应用程序测试的工具。Selenium定制app开发测试直接运行在浏览器中,定制app开发就像真正的用户在操作一样。定制app开发支持目前比较主流的浏览器。定制app开发它也实现了诸多自动化功能,比如软件自动化测试,检测软件与浏览器兼容性,自动录制、生成不同语言的测试脚本,以及自动化爬虫等。

1、安装

pip install selenium
  • 1

2、安装Chrome安装浏览器驱动WebDriver

Chrome驱动下载地址:

1)查看版本

2)在驱动器版本里选择一个版本相近的




3)常用方法或属性

driver 常用方法或属性说明
close() 关闭当前标签页
quit() 关闭浏览器
forward() 页面前进
back() 页面返回
page_source 当前标签页浏览器渲染之后的网页源代码
current_url 当前标签页的url
screen_shot(img_name) 页面截图

(1)实战有界面

from selenium import webdriverimport time# 创建Chrome浏览器对象browser = webdriver.Chrome()# 发送请求browser.get('https://www.baidu.com/')# 打印标题print(browser.title)# 延迟几秒看下浏览器time.sleep(3)# 退出浏览器browser.quit()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

(2)实战无界面

headless支持无界面命令模式

注意:chrome_options已经弃用了,改为options即可

DeprecationWarning: use options instead of chrome_options
  • 1


from selenium import webdriver# 创建Chrome浏览器对象chrome_opt = webdriver.ChromeOptions()# 开启无界面模式chrome_opt.add_argument('--headless')# 禁用gpuchrome_opt.add_argument('--disable-gpu')# 实例化配置带有driver对象browser = webdriver.Chrome(options=chrome_opt)# 发送请求browser.get('https://www.baidu.com/')# 打印标题print(browser.title)# 退出浏览器browser.quit()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

(3)常用参数说明

常用参数说明
--user-agent=""设置请求头的User-Agent
--window-size=1280x1024设置浏览器分辨率(窗口大小)
--start-maximized最大化运行(全屏窗口),不设置,取元素会报错
--disable-infobars禁止使用浏览器正在被自动化程序控制的提示
--incognito隐身模式(无痕模式)
--hide-scrollbars隐藏滚动条, 应对一些特殊页面
--disable-javascript禁止使用javascript
--blink-settings=imagesEnabled=false不加载图片, 提升速度
--headless浏览器无界面
--ignore-certificate-errors禁止使用扩展插件并实现窗口最大化
--disable-gpu禁止使用GPU加速
–disable-software-rasterizer禁止使用谷歌浏览器GPU加速-配置2(linux上用)
--disable-extensions禁止使用扩展插件
--start-maximized最大化运行(全屏窗口)

(4)八中方法

  • 老版本方法
定位方法说明
find_element_by_id() 元素的id来定位
find_element_by_name() 元素的name来定位
find_element_by_tag_name() 元素的标签名来定位
find_element_by_class_name() 元素的class来定位
find_element_by_link_text() 元素标签对之间的文字信息来定位
find_element_by_partrial_link_text() 元素标签对之间的部分文字信息来定位
find_element_by_xpath() 1、用标签名的层级关系来定位元素的绝对路径
2、用元素的属性来定位
find_element_by_css_selector() id、class、元素、属性、层级等都多种定位方法
  • 新版本方法
    注意:

获取单个元素
driver.find_element()

find_element(By.ID, 'kw')find_element(by=By.ID, value='kw')
  • 1
  • 2

获取多个元素
driver.find_elements()

find_elements(By.ID, 'kw')find_elements(by=By.ID, value='kw')
  • 1
  • 2
  • 案例
from selenium import webdriverfrom selenium.webdriver.common.by import Byimport time# 打开chrome浏览器driver = webdriver.Chrome()# 打开百度搜索页面driver.get('http://www.biqugse.com/')# 通过id定位元素id = driver.find_element(By.ID, 'wrapper')print(id)# 通过name定位元素name = driver.find_element(By.NAME, 'password')print(name)# 通过name定位多元素names = driver.find_elements(By.NAME, 'password')print(names)# 定位class元素class_name = driver.find_element(By.CLASS_NAME, 'cc')print(class_name)# 定位class_name多元素class_names = driver.find_elements(By.CLASS_NAME, 'cc')print(class_names)# 通过xpath来获取元素xpath = driver.find_element(By.XPATH, '//*[@id="wrapper"]/div[6]/div/p[2]')print(xpath)print(xpath.text)# 通过link_text标签来获取元素(精确定位)link_text = driver.find_element(By.LINK_TEXT, '设为首页')print(link_text)# 通过link_text标签来获取元素(模糊定位)partial_link_text = driver.find_element(By.PARTIAL_LINK_TEXT, '首页')print(partial_link_text)# 通过tag标签来获取元素tag = driver.find_element(By.TAG_NAME, 'img')print(tag)# 强制等待2秒查看效果time.sleep(2)# 关闭浏览器driver.quit()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41

结果:

D:\python383\python.exe D:/pythonproject/csdn/RequestsDemo.py<selenium.webdriver.remote.webelement.WebElement (session="d4a0544fde3220aa6c6d73d10f4eef7d", element="6d607d2d-cc8e-46a1-87ac-bf4c1324fb98")>================================================================================	分割线	================================================================================<selenium.webdriver.remote.webelement.WebElement (session="d4a0544fde3220aa6c6d73d10f4eef7d", element="1cca4773-69f9-4059-b29c-e534b907af6c")>[<selenium.webdriver.remote.webelement.WebElement (session="d4a0544fde3220aa6c6d73d10f4eef7d", element="1cca4773-69f9-4059-b29c-e534b907af6c")>]================================================================================	分割线	================================================================================<selenium.webdriver.remote.webelement.WebElement (session="d4a0544fde3220aa6c6d73d10f4eef7d", element="09e4359e-d6fb-4c6e-881e-c25e53689cd7")>[<selenium.webdriver.remote.webelement.WebElement (session="d4a0544fde3220aa6c6d73d10f4eef7d", element="09e4359e-d6fb-4c6e-881e-c25e53689cd7")>, <selenium.webdriver.remote.webelement.WebElement (session="d4a0544fde3220aa6c6d73d10f4eef7d", element="f99f220f-70f1-4dae-970c-9a0a1c5f537c")>]================================================================================	分割线	================================================================================<selenium.webdriver.remote.webelement.WebElement (session="d4a0544fde3220aa6c6d73d10f4eef7d", element="61ef193c-bbf0-4619-b847-f7566b527a66")>Copyright © 2021 笔趣阁 京ICP备88080001================================================================================	分割线	================================================================================<selenium.webdriver.remote.webelement.WebElement (session="d4a0544fde3220aa6c6d73d10f4eef7d", element="ccfe2632-e494-49b2-bd4d-138642a4bc13")>================================================================================	分割线	================================================================================<selenium.webdriver.remote.webelement.WebElement (session="d4a0544fde3220aa6c6d73d10f4eef7d", element="ccfe2632-e494-49b2-bd4d-138642a4bc13")>================================================================================	分割线	================================================================================<selenium.webdriver.remote.webelement.WebElement (session="d4a0544fde3220aa6c6d73d10f4eef7d", element="aa815fdd-a8af-475b-bb4f-6214e137b118")>Process finished with exit code 0
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

(5)元素的操作

from selenium import webdriverfrom selenium.webdriver.common.by import Byimport time# 打开chrome浏览器driver = webdriver.Chrome()# 打开百度搜索页面driver.get('http://www.biqugse.com/')# 通过id定位元素# 通过xpath来获取元素文本信息xpath = driver.find_element(By.XPATH, '//*[@id="wrapper"]/div[6]/div/p[2]')print(xpath.text)# 通过xpath来获取元素属性信息xpath = driver.find_element(By.TAG_NAME, 'a')print(xpath.get_attribute('href'))# 强制等待2秒查看效果time.sleep(2)# 关闭浏览器driver.quit()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

(6)前进后退

# 前进browser.forward()# 后退 browser.back()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

(7)嵌套JS

from selenium import webdriverimport timebrowser = webdriver.Chrome()url = 'http://www.biqugse.com/'browser.get(url)# js语句  滚动条拉倒最底部js = "var q=document.documentElement.scrollTop=10000"# 执行js的方法browser.execute_script(js)time.sleep(3)browser.quit()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
网站建设定制开发 软件系统开发定制 定制软件开发 软件开发定制 定制app开发 app开发定制 app开发定制公司 电商商城定制开发 定制小程序开发 定制开发小程序 客户管理系统开发定制 定制网站 定制开发 crm开发定制 开发公司 小程序开发定制 定制软件 收款定制开发 企业网站定制开发 定制化开发 android系统定制开发 定制小程序开发费用 定制设计 专注app软件定制开发 软件开发定制定制 知名网站建设定制 软件定制开发供应商 应用系统定制开发 软件系统定制开发 企业管理系统定制开发 系统定制开发