设置其值

时间:2015-09-09 06:36:13

标签: node.js webdriver-io

第一次尝试nodejs和webdriverio。当在watir-webdriver或selenium-webdriver gems中尝试时,这似乎是非常简单的东西,但这让我在webdriverio中感到困惑。为什么我在驱动程序已经找到元素并设置值

时收到此错误
var webdriverio = require('webdriverio');
var options = {
desiredCapabilities: {
browserName: 'firefox'
}
};
var client=webdriverio.remote(options);

client
.init()
.url('http://www.twitter.com').title(function(err, res) {
console.log('Title was: ' + res.value);
})
.isExisting('#signin-password')
.then(function(isExisting){
    console.log(isExisting);
})
.setValue('#signin-password','password')
.then(function(){
    console.log("password set");
})
.isExisting('#signin-email')
.then(function(isExisting){
    console.log("email"+isExisting);
})
.setValue('#signin-email','username')
.then(function(){
    console.log("username set");
});

我得到的错误是

Title was: Welcome to Twitter - Login or Sign up
true
RuntimeError: Element is not currently visible and so may not be interacted with
Build info: version: '2.47.1', revision: '411b314', time: '2015-07-30 03:03:16'
System info: host: 'DTNBNAUD10806XS', ip: '10.36.179.144', os.name: 'Windows 7', os.arch: 'amd64', os.version: '6.1', java.version: '1.8.0_05'
Driver info: driver.version: unknown
    at elementIdValue("1", "password") -     at C:\Development\node_modules\webdriverio\lib\commands\setValue.js:52:7

1 个答案:

答案 0 :(得分:0)

可能是因为该元素存在于网页上,但不可见。

取代 isExisting ,使用 isVisible

另一个原因可能是您有多个选择器 button 找到的元素,并且找到的第一个元素不可见。我不是说这是你的问题,但在某些情况下这发生在我身上。

您可以尝试使用更详细的选择器,例如 #signin-password ,以确保您尝试将值设置为正确的元素。