我试图用硒进行一个简单的测试,但没有成功。
我有一个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(未处理的PromiseRejectionWarning:WebDriverError:元素不可交互(会话信息:chrome=70.0.3538.77((驱动程序信息:chromedriver=2.44.609551(5d576e9a44fe4c5b6a07e568f1ebc753f1214634(,平台=Linux 4.15.0-42-generic x86_64(在Object.checkLegacyResponse(/home/pablo/workspace/brick-editor/node_modules/selenium-webdriver/lib/error.js:585:15(在parseHttpResponse(/home/pablo/workspace/blocks-editor/node_modules/selenium-webdriver/lib:http.js:533:13(在Executor.execute(/home/pablo/workspace/bricks-editor/node_modules/selement-webdriver/lib:http.js:468:26(在正在处理中_tickCallback(internal/process/next_tick.js:188:7((节点:5921(未处理的PromiseRejection警告:未处理的promise rejection。此错误源于在没有catch块的异步函数内部抛出,或者拒绝了未使用.catch((处理的promise。(拒绝id:1((节点:5921([DEP0018]不推荐使用警告:不推荐使用未经处理的承诺拒绝。将来,未处理的promise拒绝将使用非零退出代码终止Node.js进程。
这里可能出了什么问题?
我的设置:
节点版本:8.11.3
chromedriver版本:2.44.609551
操作系统:Ubuntu 18.0.4 LTS 64位
经过一些测试,我可以使用以下更改来完成代码工作。
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();
});
有两个具有相同@name
的输入字段:第一个是隐藏的。你需要处理第二个(可见(:
driver.findElement(By.cssSelector('div.FPdoLc input[name="btnI"]')).click();