我已经安装了npm selenium-driver,现在我想尝试使用它。
我创建了一个js文件test.js
var webdriver = require('selenium-webdriver'),
By = require('selenium-webdriver').By,
until = require('selenium-webdriver').until;
var driver = new webdriver.Builder()
.usingServer("http://docker01.localhost:4444/wd/hub")
.forBrowser('firefox')
.build();
driver.get('http://demo.mahara.org');
driver.findElement(By.id('login_login_username')).then(function(links){
console.log('Found', links.length, 'Wiki links.' )
driver.quit();
});
从我的控制台发送此节点cmd
$ node tests \ js \ test.js
(node:5648)UnhandledPromiseRejectionWarning:NoSuchElementError:无法找到元素:* [id =“login_login_username”]
at Object.throwDecodedError(C:\ xampp \ htdocs \ next-noregressiontests \ src \ test \ javascript \ node_modules \ selenium-webdriver \ lib \ error.js:550:15)
at parseHttpResponse(C:\ xampp \ htdocs \ next-noregressiontests \ src \ test \ javascript \ node_modules \ selenium-webdriver \ lib \ http://js:542:13)
在Executor.execute(C:\ xampp \ htdocs \ next-noregressiontests \ src \ test \ javascript \ node_modules \ selenium-webdriver \ lib \ http.js:468:26)
在 at process._tickCallback(internal / process / next_tick.js:182:7) (node:5648)UnhandledPromiseRejectionWarning:未处理的承诺拒绝。这个错误源于在没有catch块的情况下抛出异步函数,或者拒绝未使用.catch()处理的promise。 (拒绝ID:1) (节点:5648)[DEP0018]弃用警告:不推荐使用未处理的拒绝承诺。将来,未处理的承诺拒绝将使用非零退出代码终止Node.js进程。
我无法理解问题在哪里
答案 0 :(得分:0)
此元素
[ID =" login_login_username"]
试试这个:
[@id="login_login_username"]
答案 1 :(得分:0)
您需要等待加载页面后元素出现。因此,在driver.get(...)
之后,添加以下内容:
driver.wait(until.elementLocated(by.id('login_login_username')), 10000, 'Cannot find element');
这将继续寻找元素,并在10秒后超时,如果它没有找到它。