- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
有一个问题与此非常相似,询问如何做我想做的事情,但答案对我不起作用。我还没有足够的声誉来评论或要求澄清。
我在 NodeJS 中使用 JavaScript 和 WebDriverJS
我正在尝试切换到刚刚打开的带有 target=_blank 链接的新窗口。
我似乎已将问题归结为 driver.getWindowHandles() 给我一个错误。
精简了 Node.js 文件:
var webdriver = require("selenium-webdriver");
var driver = new webdriver.Builder().usingServer().withCapabilities({'browserName': 'chrome' }).build();
driver.get('https://www.google.com');
driver.getTitle().then(function (title) {
console.log(title);
var handles = driver.getWindowHandles();
});
driver.getTitle().then(function (title) {
console.log(title);
});
这是我的命令行的样子:
C:\selenium>node test2.js
Google
C:\selenium\node_modules\selenium-webdriver\lib\goog\async\nexttick.js:39
goog.global.setTimeout(function() { throw exception; }, 0);
^
TypeError: undefined is not a function
at C:\selenium\test2.js:8:23
at promise.ControlFlow.runInFrame_ (C:\selenium\node_modules\selenium-webdri
ver\lib\webdriver\promise.js:1877:20)
at promise.Callback_.goog.defineClass.notify (C:\selenium\node_modules\selen
ium-webdriver\lib\webdriver\promise.js:2464:25)
at promise.Promise.notify_ (C:\selenium\node_modules\selenium-webdriver\lib\
webdriver\promise.js:563:12)
at Array.forEach (native)
at Object.goog.array.forEach (C:\selenium\node_modules\selenium-webdriver\li
b\goog\array\array.js:203:43)
at promise.Promise.notifyAll_ (C:\selenium\node_modules\selenium-webdriver\l
ib\webdriver\promise.js:552:16)
at goog.async.run.processWorkQueue (C:\selenium\node_modules\selenium-webdri
ver\lib\goog\async\run.js:125:21)
at runMicrotasksCallback (node.js:337:7)
at process._tickCallback (node.js:355:11)
如果我注释掉 var handles... 行,那么脚本将无误地完成,并将文本“google”打印两次到命令提示符。
最佳答案
我想通了!
1) 在 javascript 中调用是 getAllWindowHandles。这让我很生气,每种语言的 api 似乎对同一事物都有不同的命名方法。webdriverJS webdriver类引用: http://selenium.googlecode.com/git/docs/api/javascript/class_webdriver_WebDriver.html
2) 返回是一个 promise ,而不是我想要的实际数组,因此在 .then 语句中更容易处理。
打印出的新代码:谷歌[打开的窗口名称数组]谷歌
var webdriver = require("selenium-webdriver");
var driver = new webdriver.Builder().usingServer().withCapabilities({'browserName': 'chrome' }).build();
driver.get('https://www.google.com');
driver.getTitle().then(function (title) {
console.log(title);
driver.getAllWindowHandles().then(function (allhandles) {
console.log(allhandles);
});
});
driver.getTitle().then(function (title) {
console.log(title);
});
关于javascript - 在 Selenium WebDriverJS 中使用 getWindowHandles 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30114201/
使用 selenium 和 webdriverJS 我想创建一个测试来检查页面上是否未显示某个元素。为了检查一个或多个元素是否存在,我决定使用 isDisplayed() 函数: driver.fin
我正在使用 webdriverjs 打开一个网站并通过其 id 选择一个元素。代码是, var webdriverjs = require('webdriverjs'), client
Protractor 在底层使用 WebDriverJS。 WebDriverJS 使用“控制流”的概念来确保异步任务以预期的确定顺序执行。 因此以下将按预期工作: myElement.click()
我知道有以下资源: http://docs.seleniumhq.org/docs/03_webdriver.jsp https://code.google.com/p/selenium/wiki/W
检查页面中是否存在元素时出现问题 例子 return driver.wait(function() { driver.findElement(By.css(".clas
我有 Java+WebDriver 背景,并且是 Protractor 、WebdriverJS 和 Jasmine 的新手。在显示的图像中,我试图将鼠标悬停在所有气泡上并获取工具提示值(城市、已售出
我正在尝试弄清楚 WebDriverJs 中的循环如何与 promises 一起工作。 假设您有以下 html: Rock Paper Scissors 我想使用
我正在尝试使用 Selenium、WebDriverJS 和 Jasmine 创建一个测试,以验证无论何时 li元素通过拖放 选择向右移动,不应再显示。这是我的代码片段: it('should mak
这里有人有使用 Selenium 和 webdriverjs 的经验吗?我来自非 Java 背景,总体上具有丰富的 Node.js 和 JavaScript 经验。根据 Selenium 文档,您必须
我正在尝试从 React.js 网络应用程序中点击一个动态加载的项目。该项目打开一个模式窗口,类名称为 newItemView。我试过很多东西,但没有什么是可靠的。它会工作几次,但随后给我一个错误。
我在 Alister Scott's 中找到了博客如何等到元素更改为特定值。但是我无法解决如何创建等待元素等待直到其文本从特定值(在我的例子中是“-”)更改为其他任何东西(在我的例子中它是一个计数器,
好吧,这越来越烦人了。我已经尝试解决这个问题四天了,但我被困住了。我需要单击一个按钮,但该按钮没有 ID 或类属性。我认为唯一的方法是循环遍历所有“Button”对象并找到包含文本“Submit”的对
所以我让驱动程序打开 Chrome 到网页,然后让它单击打开第二个窗口的按钮。 driver.get("https://web.com"); driver.findElement(webdriver.
使用用于 javascript 的 selenium-webdriver 等待页面完全加载的最佳方法是什么?我注意到 this question非常相似,但我需要在 javascript 中实现。 v
我有一个下拉框,我想使用 WebDriverJS 选择一个值。我查看了下面的用户指南,但找不到如何操作 https://code.google.com/p/selenium/wiki/WebDrive
好吧,我想我已经完成了这里的作业...我这辈子都无法得到 official Selenium Webdriver npm module上类;我卡住了。这是我对所有内容的版本... Ubuntu 14.
我正在尝试使用 webdriverjs单击 Flash 动画。 我尝试使用高级用户交互,但我似乎无法点击我想要的地方。甚至当我试图点击一个普通的网络元素时,比如一个按钮。 最理想的情况是,我想执行以下
有人知道如何等待 WebElement 在 WebDriverJS 中可点击吗? ?我已经知道如何等待元素“可见”,但我需要它是“可点击的”。类似于 expectable conditions 的东西
我正在使用 WebDriverJS ,用于 WebDriver 的 JavaScript 绑定(bind),用于做一些简单的前端测试(由 nodejs 驱动)。但是,我在调整窗口大小时遇到了困难,
我已经开始学习 WebDriverJs 来测试使用 Javascript 作为脚本语言的网站,网址为 https://code.google.com/p/selenium/wiki/WebDriver
我是一名优秀的程序员,十分优秀!