1

有人可以帮我弄清楚在选择登录后如何让 Selenium Webdriver 找到框架吗?

https://www.guaranteedrate.com/agent/visitors 点击登录发送密钥到用户名

@测试

public void fail() throws InterruptedException {


        driver.findElement(By.linkText("Sign In")).click();
            driver.switchTo().window("GB_window");
            driver.switchTo().frame(0);                driver.findElement(By.id("username")).sendKeys("testgr100@gmail.com");
}
4

4 回答 4

1

你能试试这个并告诉我它是否有效吗?我怀疑您遇到的只是 Firefox 的怪异现象,而 JavaScriptExecutor 会绕过它。

public void setEmailAddrOnFieldInSubFrame() {
    driver.findElement( By.linkText("Sign In") ).click();
    driver.switchTo().window("GB_window");
    driver.switchTo().frame(0);
    WebElement element = driver.findElement( By.id("username") );
    JavascriptExecutor executor = (JavascriptExecutor)driver;
    executor.executeScript( "arguments[0].value='testgr100@gmail.com';", element );

    //cleanup frame position by switching back to previous window
    driver.switchTo().defaultContent(); // always do this cleanup just in case
}
于 2013-03-21T14:55:32.590 回答
0

好吧,如果该应用程序可以在 Firefox 上运行,那么只需右键单击即可。在上下文菜单中,您将首先通过查看此框架选项来确定元素是否在框架下。一旦你确认这一点,然后检查元素。在萤火虫中缓慢滚动顶部,您将找到该元素所在的 iframe 标签。通过这种方式,您将了解该名称。如果您想知道所有 iframe 的数量及其名称,请使用 driver.findElements(By.tag("iframe"))。这将返回具有标签的 webelements 列表,然后您可以一一迭代并使用 getAttribute("name")。请注意,仅当 iframe 实际具有名称时才会返回名称,否则将返回空。

于 2013-07-26T08:17:56.483 回答
0

我想在点击登录后,你会被带到一个框架,那就是注册表。

您要尝试的是先切换到窗口(GB_Window)。

尝试删除切换到窗口调用并切换到框架并尝试您的操作

编辑代码后,使用它

    driver.findElement(By.linkText("Sign In")).click();
    driver.switchTo().frame(0);
    driver.findElement(By.id("username")).sendKeys("testgr100@gmail.com");

}

于 2013-03-11T05:51:35.350 回答
0

试试下面的代码。它对我有用。在找到用户名元素之前有两个框架。第一帧是 GB_frame,第二帧在 html 源代码中没有给出任何名称。所以我frame(0)在第二个中使用了 index ( )。

@Test

public void fail() throws InterruptedException {    

        driver.findElement(By.linkText("Sign In")).click();
        //switch to frames inside the webpage
        driver.switchTo().frame("GB_frame"); //1st frame
           driver.switchTo().frame(0); //2nd frame              
              driver.findElement(By.id("username")).sendKeys("testgr100@gmail.com");
}
于 2013-03-11T06:33:30.637 回答