selenium操作各种浏览器
下载浏览器对应版本的chromedriver.exe放到 %systemroot%目录或其它可以被系统环境找到的目录下
#coding:utf-8
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import time
#配置360浏览器地址开始
__browser_url = r’D:\Program Files\360Chrome\Chrome\Application\360chrome.exe’ #浏览器目录地址
chrome_driver = “C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe”
chrome_options = Options()
chrome_options.binary_location = _browser_url
#配置360浏览器地址结束
brower = webdriver.Chrome(chrome_driver,options=chrome_options)
#brower = webdriver.Firefox()
#brower = webdriver.IE()
brower.find_elements_by

浏览器启用方式
启动Chrome浏览器:
from selenium import webdriver
browser = webdriver.Chrome()
browser.get(‘https://www.lidihuo.com/’)

启动Firefox浏览器:
from selenium import webdriver
browser = webdriver.Firefox()
browser.get(‘https://www.lidihuo.com/’)

启动IE浏览器:
from selenium import webdriver
browser = webdriver.Ie()
browser.get(‘https://www.lidihuo.com/’)
添加浏览器参数add_argument
chrome_options.add_argument(‘–参数1 --参数2’)
chrome_options.add_experimental_option(‘excludeSwitches’, [‘enable-logging’]) #不输出console.log的日志内容到控制台
chrome_options.add_argument(‘–start-maximized’) # 最大化运行(全屏窗口),不设置,取元素会报错
chrome_options.add_experimental_option(‘excludeSwitches’, [‘enable-automation’]) #规避部分网站对selenium的检测
browser = webdriver.Chrome(options=chrome_options) #加载参数

具体可参见 https://peter.sh/experiments/chromium-command-line-switches/ ,该网站罗列了所有的参数。
设置代理
chrome_options.add_argument(‘–proxy-server=http://{ip}:{port}’)
Headless方式启动
Headless Chrome 是 Chrome 浏览器的无界面形态,可以在不打开浏览器的前提下,使用所有 Chrome 支持的特性运行你的程序。相比于现代浏览器,Headless Chrome 更加方便测试 web 应用,获得网站的截图,做爬虫抓取信息等。相比于较早的 PhantomJS,SlimerJS 等,Headless Chrome 则更加贴近浏览器环境。
Headless Chrome 对Chrome版本要求:
官方文档中介绍,mac和linux环境要求chrome版本是59+,而windows版本的chrome要求是60+,同时chromedriver要求2.30+版本。
from selenium import webdriver
chrome_options = webdriver.ChromeOptions()

使用headless无界面浏览器模式

chrome_options.add_argument(‘–headless’)
chrome_options.add_argument(‘–disable-gpu’)

启动浏览器,获取网页源代码

browser = webdriver.Chrome(options=chrome_options)
加载配置启动浏览器
Selenium操作浏览器是不加载任何配置的,下面是关于加载Chrome配置的方法:
用Chrome地址栏输入chrome://version/,查看自己的“个人资料路径”,然后在浏览器启动时,调用这个配置文件,代码如下:

coding=utf-8

from selenium import webdriver
option = webdriver.ChromeOptions()

设置成用户自己的数据目录

option.add_argument(‘–user-data-dir=C:\Users\Administrator\AppData\Local\Google\Chrome\User Data’)
driver=webdriver.Chrome(options=option)

单独配置浏览器selenium驱动位置
chrome_driver = “C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe”
driver = webdriver.Chrome(chrome_driver, chrome_options=chrome_options)

而加载Firefox配置的方法有些不同:
打开Firefox点右上角设置>?(帮助)>故障排除信息>显示文件夹,打开后把路径复制下来就可以了

coding=utf-8

from selenium import webdriver

配置文件地址

profile_directory = r’C:\Users\xxx\AppData\Roaming\Mozilla\Firefox\Profiles\1x41j9of.default’

加载配置配置

profile = webdriver.FirefoxProfile(profile_directory)

启动浏览器配置

driver = webdriver.Firefox(profile)

使用selenium控制已打开的浏览器
这里给出Google Chrome浏览器的解决方案。
我们可以利用Chrome DevTools协议。它允许客户检查和调试Chrome浏览器。
打开cmd,在命令行中输入命令:
chrome.exe --remote-debugging-port=9222 --user-data-dir=“C:\selenum\AutomationProfile”
对于-remote-debugging-port值,可以指定任何打开的端口。
对于-user-data-dir标记,指定创建新Chrome配置文件的目录。它是为了确保在单独的配置文件中启动chrome,不会污染你的默认配置文件。
还有,不要忘了在环境变量中PATH里将chrome的路径添加进去。
此时会打开一个浏览器页面,我们输入百度网址,我们把它当成一个已存在的浏览器:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options

chrome_options = Options()
chrome_options.add_experimental_option(“debuggerAddress”, “127.0.0.1:9222”)
chrome_driver = “C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe”
driver = webdriver.Chrome(chrome_driver, chrome_options=chrome_options)
print(driver.title)

会发现打印出了 “百度一下,你就知道” 的网页标题。这样我们就实现了对一个已打开的浏览器的控制。
webdriver.chrome()
其它
execute_script(‘js代码’)
需要先新建js代码,再执行
js=‘scrollTo(0,1000)’ js滚动代码
switch_to_alert()
quit() 退出浏览器
元素定位
查找一个元素
find_element_by_id()
find_element_by_name()
find_element_by_link_text() 匹配全部文本
find_element_by_partial_link_text() 部分文本匹配
find_element_by_xpath()
find_element_by_class_name() 单类名用
find_element_by_tag_name()
find_element_by_css_selector() css通用
查找一组元素
find_elements_by_id()
find_elements_by_name()
find_elements_by_link_text()
find_elements_by_partial_link_text()
find_elements_by_xpath()
find_elements_by_class_name()
find_elements_by_tag_name()
find_elements_by_css_selector()
class含有空格时解决方法
直接包含空格的CSS属性定位大法
find_element_by_css_selector(“[class=‘classname1 classname2’]”).send_keys(“yoyo”)
或者在每个class前面加上点
find_element_by_css_selector(‘.dtb-style-1.table-dragColumns’).click()
元素操作方法
send_keys() 发送文本或按键
发送回车键
要想调用键盘按键操作需要引入 keys 包:
from selenium.webdriver.common.keys import Keys
通过 send_keys()调用按键:
send_keys(Keys.ENTER)
键盘组合键的用法:

ctrl+a 全选输入框内容

send_keys(Keys.CONTROL,‘a’)
发送文本
send_keys(“你好吗”)
click() 单击
clear() 清除对象内容
submit() 提交
text() 获取元素文本信息
获取元素属性和文本
get_attribute()
innerHTML:会返回元素的内部 HTML, 包含所有的HTML标签。
textContent:获取 HTML 文本,需要注意的是 textContent 是 W3C 兼容的文字内容属性,不支持 IE 浏览器。
innerText:获取 HTML 文本,与 textContent 不同的是 innerText 不是 W3C DOM 的指定内容,不支持 FireFox 浏览器。
value:获取带有 value 属性的值。
get_property()
浏览器操作
将浏览器最大化显示
browser.maximize_window()
将浏览器最小化显示
browser.minimize_window()
浏览器设置窗口大小
设置浏览器宽480、高800显示
browser.set_window_size(480, 800)
浏览器前进后退
前进
browser.forword()
后退
browser.back()
三种等待方式
强制等待
time.sleep(秒)
需要导入time包
隐性等待
通过添加 implicitly_wait() 方法就可以方便的实现智能等待;等待隐形等待是设置了一个最长等待时间,如果在规定时间内网页加载完成,则执行下一步,否则一直等到时间截止,然后执行下一步。
implicitly_wait(30) 智能等待30秒
隐性等待对整个driver的周期都起作用,所以只要设置一次即可
显性等待
WebDriverWait(driver, 超时时长, 调用频率, 忽略异常).until(可执行方法, 超时时返回的信息)
init
until
until_not
多层框架定位
switch_to_frame

Xpath&Css定位方法速查表
描述 Xpath Css
直接子元素 //div/a div > a
子元素或后代元素 //div//a div a
以id定位 //div[@id=‘idValue’]//a div#idValue a
以class定位 //div[@class=‘classValue’]//a div.classValue a
同级弟弟元素 //ul/li[@class=‘first’]/following- ul>li.first + li
属性 //form/input[@name=‘username’] form input[name=‘username’]
多个属性 //input[@name=‘continue’ and input[name=‘continue’][type='button
第4个子元素 //ul[@id=‘list’]/li[4] ul#list li:nth-child(4)
第1个子元素 //ul[@id=‘list’]/li[1] ul#list li:first-child
最后1个子元素 //ul[@id=‘list’]/li[last()] ul#list li:last-child
属性包含某字段 //div[contains(@title,‘Title’)] div[title*=“Title”]
属性以某字段开头 //input[starts-with(@name,‘user’)] input[name^=“user”]
属性以某字段结尾 //input[ends-with(@name,‘name’)] input[name$=“name”]
text中包含某字段 //div[contains(text(), ‘text’)] 无法定位
元素有某属性 //div[@title] div[title]
父节点 //div/… 无法定位
同级哥哥节点 //li/preceding-sibling::div[1] 无法定位

Python Webdriver Exception速查表
webdriver在使用过程中可能会出现各种异常,我们需要了解该异常并知道如何进行异常处理。
异常 描述
WebDriverException 所有webdriver异常的基类,当有异常且不属于下列异常时抛出
InvalidSwitchToTargetException 下面两个异常的父类,当要switch的目标不存在时抛出
NoSuchFrameException 当你想要用switch_to.frame()切入某个不存在的frame时抛出
NoSuchWindowException 当你想要用switch_to.window()切入某个不存在的window时抛出
NoSuchElementException 元素不存在,一般由find_element与find_elements抛出
NoSuchAttributeException 一般你获取不存在的元素属性时抛出,要注意有些属性在不同浏览器里是有不同的属性名的
StaleElementReferenceException 指定的元素过时了,不在现在的DOM树里了,可能是被删除了或者是页面或iframe刷新了
UnexpectedAlertPresentException 出现了意料之外的alert,阻碍了指令的执行时抛出
NoAlertPresentException 你想要获取alert,但实际没有alert出现时抛出
InvalidElementStateException 下面两个异常的父类,当元素状态不能进行想要的操作时抛出
ElementNotVisibleException 元素存在,但是不可见,不可以与之交互
ElementNotSelectableException 当你想要选择一个不可被选择的元素时抛出
InvalidSelectorException 一般当你xpath语法错误的时候抛出这个错
InvalidCookieDomainException 当你想要在非当前url的域里添加cookie时抛出
UnableToSetCookieException 当driver无法添加一个cookie时抛出
TimeoutException 当一个指令在足够的时间内没有完成时抛出
MoveTargetOutOfBoundsException actions的move操作时抛出,将目标移动出了window之外
UnexpectedTagNameException 获取到的元素标签不符合要求时抛出,比如实例化Select,你传入了非select标签的元素时
ImeNotAvailableException 输入法不支持的时候抛出,这里两个异常不常见,ime引擎据说是仅用于linux下对中文/日文支持的时候
ImeActivationFailedException 激活输入法失败时抛出
ErrorInResponseException 不常见,server端出错时可能会抛
RemoteDriverServerException 不常见,好像是在某些情况下驱动启动浏览器失败的时候会报这个错

selenium操作各种浏览器相关推荐

  1. 出现selenium操作ie浏览器,打开之后没有反应,Unexpected error launching Internet Explorer的解决方案

    selenium操作ie浏览器,打开之后没有反应,不会请求url from selenium import webdriverdriver = webdriver.Ie(executable_path ...

  2. Python3.5+selenium操作Chrome浏览器的简单实例

    1.安装selenium 命令提示符下输入: pip install selenium 2.下载chromedriver(驱动) 3.将解压后的chromedriver.exe放到chrome浏览器的 ...

  3. isvisible java_.NET(C#) Selenium操作调用浏览器判断页面元素(ElementIsVisible)可见的方法...

    1、使用Until和匿名函数的方法var wait = new WebDriverWait(driver, new TimeSpan(0, 0, 30)); wait.IgnoreExceptionT ...

  4. c 后台代码调用ajax,.NET Selenium WebDriver操作调用浏览器后台执行Js(JavaScript)代码...

    1.Selenium WebDriver安装引用 注意:要用使用的浏览器肯定要装,并且Selenium.Chrome.WebDriver版本要和浏览器版一致. 如果要操作其它浏览器,则安装对应其它浏览 ...

  5. java操作浏览器_java selenium 操作浏览器实例

    导读热词 本篇文章介绍selenium 操作浏览器 阅读目录 浏览器最大化 前进,后退, 刷新 截图操作 模拟鼠标操作 杀掉Windows浏览器进程 浏览器最大化 前进,后退, 刷新 public s ...

  6. java使用selenium实现模拟浏览器操作API大全 模拟登录

    java selenium 模拟登录 模拟浏览器 API大全 (一)环境安装之Java (二)环境安装之IntelliJ IDEA (三)环境安装之Selenium 1.通过jar包安装 2.通过Ma ...

  7. [Python爬虫]使用Selenium操作浏览器订购火车票

    这个专题主要说的是Python在爬虫方面的应用,包括爬取和处理部分 [Python爬虫]使用Python爬取动态网页-腾讯动漫(Selenium) [Python爬虫]使用Python爬取静态网页-斗 ...

  8. Jmeter模拟selenium操作浏览器

    前言 selenium是一个web自动化测试的开源框架,它支持多语言:python/java/c#- selenium支持多语言,是因为selenium与浏览器驱动之间是通过http协议进行通信的.只 ...

  9. Selenium基础 — Selenium操作浏览器窗口滚动条

    1.为什么操作滚动条 在HTML页面中,由于前端技术框架的原因,页面中的一些元素为动态显示,元素根据滚动条的下拉而被加载. 例如:页面注册同意条款,需要滚动条到最底层,才能点击同意. 2.Seleni ...

最新文章

  1. Java中final变量的初始化方式
  2. thymeleaf th:if else
  3. 数据拟合---使用自定义函数进行非线性拟合 -在Origin。matlab拟合工具箱cftool
  4. 【HANA系列】SAP HANA SQL获取当前日期最后一天
  5. 以太网共同发明者去世,享年71岁
  6. 测试之CR规范及错误列表
  7. 7月18日云栖精选夜读丨蚂蚁金服的“野心”:要做新一代世界级金融科技供应商...
  8. 计算机驱动程序的安装过程,电脑怎么安装驱动程序
  9. 固定资产盘点常用的方法,你了解多少?
  10. 情侣的网站代码java_GitHub - 90x64/lovers-website: 程序员的情侣网站 (programmer's website of lovers)...
  11. HTTP Status 500 - Servlet.init() for servlet DispatcherServlet threw exception
  12. 网络准入认证系统方案评估
  13. C语言实现电脑定时关机
  14. python --安装pylab
  15. 端到端机器学习_使用automl进行端到端的自动化机器学习过程
  16. (刘二大人)PyTorch深度学习实践-卷积网络(Advance)
  17. python中elif和else的区别_浅谈Python的条件判断语句if/else语句
  18. 06-初始OpenGL ES -用GLSL实现画板的功能
  19. 【poi-3.8】poi解析excel插入数据库详解
  20. 华为_网络工程师_初级笔记(完整版)

热门文章

  1. 用PicGo+Gitee搭建免费图床
  2. 百度以图搜图API介绍
  3. 你需要但是找不到的网站,其实不太想分享,有你想要想收藏的
  4. matlab文字转数据,将文本转换为数值 - MATLAB Simulink - MathWorks 中国
  5. umi中@umijs/plugin-dva的使用,及实现一套增删改
  6. 从list中删除某几个元素的方法
  7. 电商搜索运营知识-拼多多关键词搜索排名规则剖析-拼多多直通车
  8. 安装MySQL的详细步骤
  9. 手把手带你入门深度学习(一):保姆级Anaconda和PyTorch环境配置指南
  10. Java爬爬之网页去重和代理ip