0

第一次尝试 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
4

2 回答 2

2

如果你使用 isExisting 你只会得到一个布尔值作为回报。为了增加测试的稳定性,我建议您在 DOM 仍在加载的情况下使用 waitForExist 或 waitForVisible

于 2015-09-10T16:00:38.893 回答
0

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

而不是isExisting,使用isVisible

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

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

于 2015-09-09T15:26:54.583 回答