栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

量角器中的自定义浏览器操作

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

量角器中的自定义浏览器操作

是的,您可以扩展操作框架。 但是,严格来说,得到的是:

browser.actions().mouseDown(element).sleep(5000).mouseUp(element).perform();

意味着弄乱硒的胆量。因此,YMMV。

请注意,量角器文档是

webdriver.WebDriver.prototype.actions
在解释操作时引用的,我的意思是指它没有修改或添加到Selenium提供的内容中。

传回的物件类别

webdriver.WebDriver.prototype.actions
webdriver.ActionSequence
。实际导致序列执行任何操作的方法是
webdriver.ActionSequence.prototype.perform
。在默认实现中,此函数采用调用
.sendKeys()
或时记录的命令,
.mouseDown()
并具有
ActionSequence
与之关联的驱动程序的顺序安排它们。因此,
无法通过这种方式* 添加
.sleep
方法:
*

webdriver.ActionSequence.prototype.sleep = function (delay) {    var driver = this.driver_;    driver.sleep(delay);    return this;};

否则,睡眠会发生 的顺序进行 。您要做的就是 记录 所需的效果,以便稍后执行。

现在,要考虑的另一件事是,默认值

.perform()
只希望执行
webdriver.Command
,这是要发送到浏览器的命令。睡眠不是这样的命令之一。因此
.perform()
必须进行修改以处理我们将要记录的内容
.sleep()
。在下面的代码中,除了之外,我还选择了
.sleep()
记录一个函数并进行修改
.perform()
以处理函数
webdriver.Command

放在一起后,这就是整个外观。我先给出了一个使用库存硒的示例,然后添加了补丁和使用修改后的代码的示例。

var webdriver = require('selenium-webdriver');var By = webdriver.By;var until = webdriver.until;var chrome = require('selenium-webdriver/chrome');// Do it using what Selenium inherently provides.var browser = new chrome.Driver();browser.get("http://www.google.com");browser.findElement(By.name("q")).click();browser.actions().sendKeys("foo").perform();browser.sleep(2000);browser.actions().sendKeys("bar").perform();browser.sleep(2000);// Do it with an extended ActionSequence.webdriver.ActionSequence.prototype.sleep = function (delay) {    var driver = this.driver_;    // This just records the action in an array. this.schedule_ is part of    // the "stock" pre.    this.schedule_("sleep", function () { driver.sleep(delay); });    return this;};webdriver.ActionSequence.prototype.perform = function () {    var actions = this.actions_.slice();    var driver = this.driver_;    return driver.controlFlow().execute(function() {        actions.forEach(function(action) { var command = action.command; // This is a new test to distinguish functions, which  // require handling one way and the usual commands which // require a different handling. if (typeof command === "function")     // This puts the command in its proper place within     // the control flow that was created above     // (driver.controlFlow()).     driver.flow_.execute(command); else     driver.schedule(command, action.description);        });    }, 'ActionSequence.perform');};browser.get("http://www.google.com");browser.findElement(By.name("q")).click();browser.actions().sendKeys("foo")    .sleep(2000)    .sendKeys("bar")    .sleep(2000)    .perform();browser.quit();

在我的实现中,

.perform()
我已经用普通的
goog...
Javascript 替换了Selenium代码使用的功能。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/426734.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号