Selenium Javascript教程

按主题探索文章、教程与工程实践。

21 篇内容

2017

(一)初始化环境

MacOS nodejs版本: 6.2.0 selenium-webdriver版本: 3.4.0 chrome版本: 版本 59.0.3071.86(正式版本)64位 chrome driver版本: ChromeDriver 2.30.477690 Windows TODO TODO chrome driver建议通过科学上网的方式下载。 下载地址 下载 …

1 分钟阅读

(二)实战: 最简单的自动化脚本

熟悉selenium webdriver 代码套路 体验元素定位的最简单情形 学会如何模拟输入键盘按键 将代码抄一遍,然后精读一遍,了解每一行代码的意义。 本节我们需要使用selenium打开chrome浏览器,跳转到百度首页(http://www.baidu.com),在搜索框中输入selenium并按下回车键。 新建文 …

1 分钟阅读

(三)查看文档

官方文档是最权威的参考资料。在绝大多数情况下我们应该首先从官方文档里获取帮助,如果实在是找不到结果,再考虑其他方式。 selenium javascript 版本的文档在这里 除了官方文档,stackoverflow也是一个非常好的选择,很多时候去一些具体场景的使用问题,这里都有答案。 selenium javascript的问题一般都列在这里,我们可以通 …

1 分钟阅读

(四)通过id去定位页面上的元素

UI的自动化测试的主要操作就是找到页面上的元素并且操作元素。找到元素一般有2个目的 操作元素: 比如点击,输入内容之类的 获取这个元素的某些属性: 比如获取一个段落元素(p)的内容,通过这个内容去验证测试是否达到了预期的效果(断言) selenium的javascript binding支持下面一些定位方法 By.className( name ) …

1 分钟阅读

(五)通过name去定位页面上的元素

一般来说表单元素的标签大多出现在 标签中,比如 : 单行文本框 : checkbox : radio : 下拉框 : 多行文本 如果这样元素有name属性的话,建议使用name属性去定位,因为相比较其他属性,name属性更加稳定。 有一些元素比如checkbox和radio往往有多个name属性相同的元素,如下面的html代码所示 这时候也可以使用name属 …

1 分钟阅读

(六)通过className去定位页面上的元素

用className定位实际上是通过元素的html属性class定位,由于最早的webdriver client版本是使用java实现的,java中class是一个保留字,class不给用,所以就使用了className来替代。 selenium不支持复合的class属性。比如 ,我们只能通过 或者是 来定位,不能同时使用这2个class进行定位。 熟 …

1 分钟阅读

(七)通过linkText去定位页面上的元素

链接可以使用By.linkText和By.partialLinkText的方式去定位。 链接的html标签是 。 看这个html代码 ,这里**[这就是linkText]** 便是这个链接的linkText,partialLinkText指的是部分的链接文本,如果链接的文本过长的时候,使用partialLinkText会起到简化代码的作用。 熟 …

1 分钟阅读

(八)通过css选择器去定位页面上的元素

火狐的css教程应该是比较权威的css入门教程了。 对于selenium自动化测试来说,大家只需要掌握一些必备的css选择器知识就好了。 熟悉selenium webdriver 定位方式 学会通过css选择器去定位元素 我们使用html5-test-page作为我们的练习对象。 将html代码拷贝一份并保存到本地,文件名为 。 定位下面html代码所示的输 …

1 分钟阅读

(九)通过xpath去定位页面上的元素

自学xpath 选取此节点的所有子节点。 从根节点选取。 从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。 选取当前节点。 选取当前节点的父节点。 选取属性。 css和xpath选择器大家只需要精通其中一种就可以了。

1 分钟阅读

(十)模拟键盘按键

sendKeys()方法可以用来模拟用户按下键盘,组合键比如 等也可以模拟。 学会使用sendKeys方法 学会使用模拟特殊按钮 测试中我们经常会打开一个页面,然后一下往下拉,直到滚动条拉到最底部,这怎么用selenium来实现呢? 其实我们可以用模拟按空格键的方式实现。大家都知道,在页面上一直按空格键,页面就会到达最底部,当然这并不精确,但大多数时候都是管 …

1 分钟阅读

(十一)ActionSequence

当页面的交互比较复杂的时候,我们可能会使用到组合事件。比如先把鼠标移动到某个元素上,然后按住鼠标,将该元素拖到另一个地方。为了完成这种操作,我们就需要使用组合事件ActionSequence 组合事件中,我们可以组合鼠标和键盘的操作,这些操作将根据我们组合的顺序依次执行。 直接使用 进行调用,不需要额外的初始化工作; 只有显示调用了 方法才让所有动作真正得到 …

1 分钟阅读

(十二)定位一组元素

定位一组元素一般有如下的作用 找到一组属性部分相同的元素,遍历元素,做一些批量操作 找到一组属性部分相同的元素,遍历元素,返回1个或几个特定的元素,做更精确的定位 findElements方法可以定位一组元素。该方法的参数跟findElement方法一致。 学会使用findElements方法 学会使用getAttribute方法 打印测试教程网中所有 …

1 分钟阅读

(十三)切换frame

当我们要定位的元素位于页面中的iframe或frame标签中时,我们必须将定位的上下文切换到对应的frame中去,否则我们将没有办法定位到frame中的元素,这是套路,可以先无脑记住。 学会使用switchTo().frame(id)方法 id可以是1个数字,从0开始。switchTo().frame(0)表示切换到页面上的第1个frame,依此类推; id …

1 分钟阅读

(十四)处理下拉列表 select

下拉列表的标签是select,如上所示,其中 select表示下拉列表 option表示列表里的子项 上面的html里,这个下拉列表中一共有3项,分别是Option One, Option Two和Option Three。 学会选择下拉列表里的特定项目 学会使用层级定位 选择上面html代码所示的下拉列表的最后一项,也就是Option Three。

1 分钟阅读

(十五)切换窗口(标签)

有时候我们点击链接会弹出新窗口,我们需要去新窗口继续定位和操作元素,这时候就需要用到切换窗口的操作了。 switchTo().window(name_or_handle)方法可以切换到目标窗口。 一般来说,不建议大家直接使用上面的方法去切换,更明智的做法是获取要打开的窗口的链接,然后直接用get访问该链接,这样就不需要写切换窗口的代码了。 该方法的参数有可以 …

1 分钟阅读

(十六)执行javascript

使用driver.executeScript(js)方法会在当前的定位上下文里执行相应的js脚本。 executeScript方法支持向脚本中传入参数,所有参数的参数都可以在脚本中通过 对象来引用。我们可以传入下列类型的参数: boolean number string WebElement:也就是我们定位到的页面对象 Array或者是Object: 只要里 …

1 分钟阅读

(十七)alert confirm 和 prompt

原生的javascript弹出框,各个浏览器的实现不一样,外观也不太一样。 这些弹出框会阻止页面上的所有操作,因此每次这些框弹出来以后,我们必须想办法让这些东西消失掉,否则脚本无法往下进行下去。 当alert弹出之后,我们可以通过类似下面的代码去处理alert 切换到alert/confirm/prompt之后,我们可以进行如下的后续动作 accept(): …

1 分钟阅读

(十八)截图

在测试用例失败的时候进行截图,这是大家经常会遇到的需求。 学会使用takeScreenshot()方法 下面我们就用代码实现打开测试教程网 selenium javascript教程,然后截图的功能 脚本目录下会出现pic.png文件。

1 分钟阅读

(十九)wait和sleep

wait方法一般用来等待页面上某些条件得到满足后才继续执行脚本。比如等待页面上某个弹出框出现,等某个元素可以被定位到之类。 wait方法中可以传入Condition表示一般性条件和WebElementCondition。 如果传入的元素级条件被满足,那么wait方法会返回 WebElementPromise,也就是说可以直接返回满足条件的元素。 如果在规定的 …

1 分钟阅读

(二十)until

until一般跟wait一起用,用于等待页面上的一些条件被满足 ableToSwitchToFrame(frame): 直到selenium可以将定位上下文切换到frame里 alertIsPresent(): 直到alert出现 elementIsDisabled(element): 直到元素灰掉, …

1 分钟阅读