。driver.switchTo()defaultContent();使用当前版本的Chrome

时间:2015-06-10 11:46:27

标签: java selenium selenium-webdriver selenium-chromedriver

我正在使用ChromeDriver在版本42.0.2311.90米的谷歌浏览器上运行在线应用程序的回归包,并且在尝试将焦点从iFrame返回到主屏幕时遇到问题,即在点击线路时码 的 driver.switchTo()defaultContent();

这在早期版本的Chrome上完美运行,并且在版本39.x.etc

的同事电脑上仍能正常使用

还有其他人遇到过类似的东西吗?如果是这样,我们将非常感谢任何帮助/建议/解决方法。

特定Java方法的代码是:

@When("I click the $buttonText button in AllFinanz")
public void clickButtonInAllFinanz(String buttonText) throws InterruptedException {
     System.out.println("[TEST] Clicking " + buttonText);
     try {
          // access inside iframe
          WebElement elementFrame = driver.findElement(By.xpath("//iframe[contains(@onload, 'riskAssessmentIframe')]"));
  driver.switchTo().frame(elementFrame);

           // click the button
           WebElement button = driver.findElement(By.xpath("//input[@value='" + buttonText + "']"));
           button.click();

           // return focus to main window
           driver.switchTo().defaultContent();

   Thread.sleep(sleepTime*5);
           System.out.println("[SUCCESS] Clicked button " + buttonText);

     } catch (org.openqa.selenium.NoSuchElementException e) {
          System.out.println("[FAILURE] Unable to click button " + buttonText);
     } catch (org.openqa.selenium.ElementNotVisibleException e) {
          System.out.println("[FAILURE] " + buttonText + " not visible");
     }
}

如上所述,所有工作都很好,直到driver.switchTo()。defaultContent();代码行,其中抛出以下错误:

  

org.openqa.selenium.WebDriverException:未知错误:缺少'id'   (会议信息:chrome = 42.0.2311.90)(驱动信息:   chromedriver = 2.10.267521,platform = Windows NT 5.1 SP3 x86)(警告:   服务器没有提供任何堆栈跟踪信息)系统信息:   os.name:'Windows XP',os.arch:'x86',os.version:'5.1',   java.version:'1.7.0_45'驱动程序信息:driver.version:RemoteWebDriver

再一次,任何帮助都会受到赞赏 - 我已经没有想法重新解决问题了,并且在谷歌搜索时无法找到任何答案。

谢谢, 百里

2 个答案:

答案 0 :(得分:0)

根据例外情况,Chrome Ver为42,ChromeDriver为2.10。根据以下更改说明,ChromeDriver 2.10最多支持36个。

http://chromedriver.storage.googleapis.com/2.10/notes.txt

很高兴使用最新的chromedriver,让我们看看它是否正常工作。

由于

答案 1 :(得分:0)

尝试。

await driver.wait(until.alertIsPresent());    
el = driver.switchTo().alert();
await el.accept();

查看所有语言https://www.selenium.dev/documentation/en/webdriver/js_alerts_prompts_and_confirmations/的文档