我在node.js中编写的js程序是:
var webdriver = require("selenium-webdriver");
function createDriver() {
var driver = new webdriver.Builder()
.usingServer('http://localhost:4444/wd/hub')
.withCapabilities(webdriver.Capabilities.chrome())
.build();
driver.manage().timeouts().setScriptTimeout(900000);
return driver;
}
var driver = createDriver();
driver.get('https:webpage-url');
driver.findElement(webdriver.By.name('USERNAME')).sendKeys('abcd');
driver.findElement(webdriver.By.name('PASSWORD')).sendKeys('pswd');
driver.findElement(webdriver.By.id('button')).click();
driver.findElement(webdriver.By.name('ABCD')).sendKeys('abcd');
driver.findElement(webdriver.By.id('button')).click();
driver.findElement(webdriver.By.name('DEPRT')).sendKeys('DEPT)');
driver.findElement(webdriver.By.id('abutton')).click();
driver.manage().timeouts().implicitlyWait(1000000);
driver.switchTo().defaultContent();
driver.switchTo().frame("frameid");
driver.findElement(webdriver.By.id('pbutton')).click();
我在调用frame元素之前尝试使用implicitlyWait函数,但它没有等待,并且显示错误NoSuchFrameError。
我在调用iframe元素之前只使用了driver.wait(10000),但是它说的是timedout而不是执行剩余的步骤。请帮帮我
答案 0 :(得分:1)
您需要使用显式等待,如here所述。 然后你的脚本将等待特定的“frameid”显示,然后再切换到它。
已编辑:已添加示例代码:
driver.wait(function() {
return driver.findElement(webdriver.By.id('frameid')).isDisplayed();
}, 30);