driver.switchTo().defaultContent(); returning error when using current version of Chrome

4.7k views Asked by At

I'm running a regression pack for an online app using ChromeDriver on Version 42.0.2311.90 m of Google Chrome, and am having issues when trying to return focus from an iFrame back to the main screen, i.e. upon hitting the line of code driver.switchTo().defaultContent();

This worked perfectly on earlier versions of Chrome, and still works fine on a colleagues pc which has Version 39.x.etc

Has anyone else encountered anything similar ? If so, any help / advice / workaround would be greatly appreciated.

The code for the particular Java method is:

@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");
     }
}

As stated all works fine up until the driver.switchTo().defaultContent(); line of code, where the following error is thrown back:

org.openqa.selenium.WebDriverException: unknown error: missing 'id' (Session info: chrome=42.0.2311.90) (Driver info: chromedriver=2.10.267521,platform=Windows NT 5.1 SP3 x86) (WARNING: The server did not provide any stacktrace information) System info: os.name: 'Windows XP', os.arch: 'x86', os.version: '5.1', java.version: '1.7.0_45' Driver info: driver.version: RemoteWebDriver

Again any help would be appreciated - I've ran out of ideas re workarounds and cant find any answers when googling.

Thanks, Barry.

2

There are 2 answers

0
kizziah On

Try.

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

Check out the docs for all languages https://www.selenium.dev/documentation/en/webdriver/js_alerts_prompts_and_confirmations/

0
murali selenium On

As per exception your Chrome Ver is 42 and ChromeDriver is 2.10. As per below change notes, ChromeDriver 2.10 supports up to 36.

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

Good to use latest chromedriver, lets see is it working fine or not.

Thanks