我正在尝试对硒进行简单的测试而没有成功。
我有一个javascript配置测试:
chrome.config.js
var driver = new webdriver.Builder().
.forBrowser('chrome')
.build();
driver.get('http://www.google.com');
driver.findElement(By.name('btnI')).click();
我遇到以下错误:
(节点:5921)UnhandledPromiseRejectionWarning:WebDriverError:元素不可交互 (会议信息:chrome = 70.0.3538.77) (驱动程序信息:chromedriver = 2.44.609551(5d576e9a44fe4c5b6a07e568f1ebc753f1214634),平台= Linux 4.15.0-42-通用x86_64) 在Object.checkLegacyResponse(/home/pablo/workspace/bricks-editor/node_modules/selenium-webdriver/lib/error.js:585:15) 在parseHttpResponse(/home/pablo/workspace/bricks-editor/node_modules/selenium-webdriver/lib/http.js:533:13) 在Executor.execute(/home/pablo/workspace/bricks-editor/node_modules/selenium-webdriver/lib/http.js:468:26) 在 在process._tickCallback(内部/进程/next_tick.js:188:7) (节点:5921)UnhandledPromiseRejectionWarning:未处理的承诺拒绝。引发此错误的原因可能是抛出了一个没有catch块的异步函数,或者是拒绝了一个.catch()无法处理的承诺。 (拒绝ID:1) (节点:5921)[DEP0018] DeprecationWarning:已弃用未处理的承诺拒绝。将来,未处理的承诺拒绝将以非零退出代码终止Node.js进程。
这有什么问题吗?
我的设置:
节点版本:8.11.3
chromedriver版本:2.44.609551
操作系统:Ubuntu 18.0.4 LTS 64位
答案 0 :(得分:1)
有两个具有相同@name
的输入字段:第一个是隐藏的。您需要处理第二个(可见)一个:
driver.findElement(By.cssSelector('div.FPdoLc input[name="btnI"]')).click();
答案 1 :(得分:1)
经过一些测试,我可以通过以下更改完成代码工作。
var webdriver = require('selenium-webdriver'),
By = webdriver.By,
until = webdriver.until;
var driver = new webdriver.Builder()
.forBrowser('chrome')
.build();
driver.get('http://www.google.com');
var btnI;
driver.findElements(By.name('btnI')).then(function(list) {
btnI = list[1];
btnI.click();
});