使网页等待加载以识别帧ID

时间:2014-11-19 10:21:13

标签: javascript selenium selenium-webdriver webdriver

我在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而不是执行剩余的步骤。请帮帮我

1 个答案:

答案 0 :(得分:1)

您需要使用显式等待,如here所述。 然后你的脚本将等待特定的“frameid”显示,然后再切换到它。

已编辑:已添加示例代码:

driver.wait(function() {
            return driver.findElement(webdriver.By.id('frameid')).isDisplayed();
        }, 30);