支持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使用String的Template进行参数动态替换

    1.前言: 之前使用string的find(),从指定的param里面查找,是否包含了某个字符,有的话,使用replace进行替换,一个接口的param要替换的参数少的话,使用这种方式,的确可行,如果 ...

  2. JMeter_使用正则和JSON提取器参数化(常用于提取token)

    一.使用正则表达式提取器提取token 查看登录响应参数找出token.图中token为 "ticketString": "ccf26b17-a96f-4913-8925 ...

  3. JS 在使用hasOwnProperty()函数时报错

    在使用hasOwnProperty()方法判断对象是否具有某种属性时eslint报下列错误: Do not access Object.prototype method 'hasOwnProperty ...

  4. Mysql设计遵循规则

    为什么要优化系统的吞吐量瓶颈往往出现在数据库的访问速度上随着应用程序的运行,数据库的中的数据会越来越多,处理时间会相应变慢数据是存放在磁盘上的,读写速度无法和内存相比 如何优化设计数据库时:数据库表. ...

  5. 移动端position:fixed 解决方案

    相信不少人做移动端项目的时候都会遇到position:fixed 的坑. 下面提供一个解决方法,不用引入任何其他的js库,纯css解决. 解决问题的关键就是:fixed元素内部必须嵌套一个positi ...

  6. Docker的学习笔记(一)基础知识

    概述 本人最近在学习docker相关的知识,既是工作本身的需要也是自己对技术的追求的必要,以后我也会推出容器相关的随笔,既可以增长自己的知识,也可以和读者广泛交流,岂不乐乎?话不多说.第一篇先介绍do ...

  7. 《剑指offer》面试题18. 删除链表的节点

    问题描述 给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点. 返回删除后的链表的头节点. 注意:此题对比原题有改动 示例 1: 输入: head = [4,5,1,9], val = ...

  8. [µC/GUI 学习]µC/GUI移植

    一.什么是µC/GUI µC/GUI为任何需要图形显示器的嵌入式应用提供了一种灵活的图形用户界面(GUI).µC/GUI允许软件工程师在使用了LCD显示器的产品上增加美轮美奂的用户界面,从简单的2D黑 ...

  9. JSON串、JSON对象、Java对象的相互转换

    对象类型转换2: com.alibaba.fastjson.JSONObject时经常会用到它的转换方法,包括Java对象转成JSON串.JSON对象,JSON串转成java对象.JSON对象,JSO ...

  10. DEEP LEARNING WITH PYTORCH: A 60 MINUTE BLITZ | TORCH.AUTOGRAD

    torch.autograd 是PyTorch的自动微分引擎,用以推动神经网络训练.在本节,你将会对autograd如何帮助神经网络训练的概念有所理解. 背景 神经网络(NNs)是在输入数据上执行的嵌 ...