支持HtmlUnitDriver无头浏览器自动化
 
定位元素的方式:是可嵌套的
WebElement cheese = driver.findElement(By.id("cheese"));
WebElement cheddar = cheese.findElement(By.id("cheddar"));
 
* WebDriver 代表浏览器
* WebElement 表示特定的DOM节点(控件,例如链接或输入字段等)
 
为了稍微提高性能,我们应该尝试使用更具体的定位策略,有八种定位策略
 
 
class name :定位其类名包含搜索值的元素(复合类名不被允许)
 
使用定位选择器的一些提示
一般来说,如果HTML ID可用,唯一且始终可预测,那么它们是在页面上定位元素的首选方法。它们往往工作得很快,并且放弃了复杂的DOM遍历所带来的大量处理。
如果唯一ID不可用,则写入良好的CSS选择器是定位元素的首选方法。XPath和CSS选择器一样工作,但语法复杂且经常难以调试。尽管XPath选择器非常灵活,浏览器厂商通常不会对它们进行性能测试,而且速度会很慢。
基于链接文本和部分链接文本的选择策略具有缺陷,因为它们仅在链接元素上工作。此外,他们在WebDriver内部调用XPath选择器。
标记名称可能是定位元素的一种危险方法。页面上经常存在多个相同标签的元素。但这在调用findElements(By)方法查找返回元素集合时非常有用。
建议将您的定位器尽可能紧凑和可读。让WebDriver遍历DOM结构是一项代价昂贵的操作,越能缩小搜索范围,效果越好。
 
 
元素操作:
sendKeys方法设置元素的文本
JavaScript库来添加拖放功能
click方法单击一个元素
 
大多数驱动程序需要一个额外的可执行文件让Selenium与浏览器通信,即浏览器驱动,如运行Chrome需要chromeDriver
浏览器驱动的环境变量配置:
* 创建一个目录来放置可执行文件,例如 C:\ WebDriver \ bin或/ opt / WebDriver / bin
* 将该目录添加到PATH中:
* 在Windows上 - 以管理员身份打开命令提示符,然后运行以下命令将该目录永久地添加到您计算机上所有用户的路径中:
setx / m路径“%path%; C:\ WebDriver \ bin \”
* 在macOS和Linux上使用bash用户 - 在终端中:
export PATH = $ PATH:/ opt / WebDriver / bin >>〜/ .profile
* 您现在已准备好测试您的更改。关闭所有打开的命令提示符并打开一个新提示符。在上一步创建的文件夹中输入其中一个二进制文件的名称,例如:
chromedriver
如果您的PATH配置正确,您会看到一些与驱动程序启动有关的输出:
在端口9515上启动ChromeDriver 2.25.426935(820a95b0b81d33e42712f9198c215f703412e1a1)
只允许本地连接。
按下,您可以重新获得对命令提示符的控制Ctrl + C。
 
链接Chrome
要实例化Chrome / Chromium会话,您可以执行以下操作:
WebDriver driver = new ChromeDriver();
请记住,您必须将路径设置为chromedriver可执行文件。这可以使用以下行:
System.setProperty("webdriver.chrome.driver", "/path/to/chromedriver");
require "selenium-webdriver"
driver = Selenium::WebDriver.for :chrome

chromedriver被当作WebDriver远程服务器,它通过公开chrome的内部自动代理接口来指挥浏览器做什么

 
 
链接火狐
由于geckodriver是启动Firefox的新默认方式,因此您可以像Selenium 2一样实例化Firefox:
WebDriver driver = new FirefoxDriver();
require "selenium-webdriver"
driver = Selenium::WebDriver.for :firefox
如果您不想使用PATH设置geckodriver的位置,请以编程方式设置geckodriver二进制位置:
System.setProperty("webdriver.gecko.driver", "/path/to/geckodriver");
也可以在运行时设置属性:
mvn test -Dwebdriver.gecko.driver=/path/to/geckodriver

selenium连接浏览器方式的更多相关文章

  1. Selenium系列(22) - 通过selenium控制浏览器滚动条的几种方式

    如果你还想从头学起Selenium,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1680176.html 其次,如果你不懂前端基础知识, ...

  2. 使用Python + Selenium打造浏览器爬虫

    Selenium 是一款强大的基于浏览器的开源自动化测试工具,最初由 Jason Huggins 于 2004 年在 ThoughtWorks 发起,它提供了一套简单易用的 API,模拟浏览器的各种操 ...

  3. selenium之浏览器、元素、鼠标等操作总结

    1    控制浏览器 Selenium 主要提供的是操作页面上各种元素的方法,但它也提供了操作浏览器本身的方法,比如浏览器的大小以及浏览器后退.前进按钮等. 1.1  控制浏览器窗口大小 在不同的浏览 ...

  4. Python开发爬虫之动态网页抓取篇:爬取博客评论数据——通过Selenium模拟浏览器抓取

    区别于上篇动态网页抓取,这里介绍另一种方法,即使用浏览器渲染引擎.直接用浏览器在显示网页时解析 HTML.应用 CSS 样式并执行 JavaScript 的语句. 这个方法在爬虫过程中会打开一个浏览器 ...

  5. selenium的定位方式

    1.selenium的定位方式 selenium有18种定位方式,8种单数,8种复数,2种父类 2.8种单数定位方式 from selenium import webdriverimport time ...

  6. 杂项-自动化测试工具:Selenium(浏览器自动化测试框架)

    ylbtech-杂项-自动化测试工具:Selenium(浏览器自动化测试框架) Selenium 是一个用于Web 应用程序测试的工具.Selenium 测试直接运行在浏览器中,就像真正的用户在操作一 ...

  7. 使用Selenium通过浏览器对网站进行自动化测试和相关问题

    使用Selenium通过浏览器对网站进行自动化测试 自动化测试概念: 一般是指软件测试的自动化,软件测试就是在预设条件下运行系统或应用程序,评估运行结果,预先条件应包括正常条件和异常条件. 广义上来讲 ...

  8. 自动化测试-selenium启动浏览器

    在自动化测试过程中,通过selenium启动浏览器时,可能需要加载插件(如测试用的firebug.或产品中要求必须添加某插件等).读取用户数据(自己浏览器的配置文件/别人直接给的浏览器配置文件).设置 ...

  9. Selenium +Chrome浏览器如何模拟手机操作

    Selenium +Chrome浏览器如何模拟手机操作 进入手机模式 打开谷歌浏览器,按F12,进入开发者模式,点击Toggle device toolbar,进入手机模式 设置Chrome的手机模式 ...

随机推荐

  1. python 之 pip、pypdf2 安装与卸载

    pip是个啥? pip 是一个现代的,通用的 Python 包管理工具.提供了对 Python 包的查找.下载.安装.卸载的功能. 第一步:pip 下载:https://pypi.org/projec ...

  2. Redis_简介(1)

    Redis简介 Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API.从2010年3月15日起,Redis的开发工作 ...

  3. centOS8安装java14

    一.去官网下载相应的linux版本 二.通过xftp把下载下的文件传输到linux下指定目录 三.使用命令 rpm -ivh 安装(tar.gz 使用 tar zxvf 命令) 四.配置环境变量   ...

  4. Oracle 五种约束的创建和移除:

    1.主键约束: 创建表的时候就添加: create table table_name (categoryId varchar2(10), categoryName varchar2(30), prim ...

  5. 【PowerShell】格式化输出字符串

    1 '{0:d4}' -f 10 2 '数字的补零';{} 3 '{0:f4}' -f 10 4 '保留小数位数';{} 5 '{0:p2}' -f 0.4567 6 '转换为百分比';{} 7 '{ ...

  6. 单元测试 报错 org.junit.runners.model.InvalidTestClassError: Invalid test class 'com.example.xxx' 解决

    1.前言 很奇怪 ,单元测试正常执行,但是结束后会报错 org.junit.runners.model.InvalidTestClassError: Invalid test class 'com.e ...

  7. SSRF服务器端请求伪造漏洞基础

    0x00 思考 1.什么是SSRF漏洞?2.SSRF漏洞的利用方式3.SSRF漏洞绕过4.SSRF漏洞加固 0x01 什么是SSRF漏洞 定义:SSRF漏洞,中文全称为服务端请求伪造漏洞,是一种由攻击 ...

  8. redis的bind误区

    对于Redis中bind的正确的理解是:bind:是绑定本机的IP地址,(准确的是:本机的网卡对应的IP地址,每一个网卡都有一个IP地址),而不是redis允许来自其他计算机的IP地址.如果指定了bi ...

  9. Keil MDK STM32系列(九) 基于HAL和FatFs的FAT格式SD卡TF卡读写

    Keil MDK STM32系列 Keil MDK STM32系列(一) 基于标准外设库SPL的STM32F103开发 Keil MDK STM32系列(二) 基于标准外设库SPL的STM32F401 ...

  10. [论文翻译] 分布式训练 Parameter Sharding 之 Google Weight Sharding

    [论文翻译] 分布式训练 Parameter sharding 之 Google Weight Sharding 目录 [论文翻译] 分布式训练 Parameter sharding 之 Google ...