使用selenium Webdriver切换到新窗口后无法找到元素

时间:2017-07-27 18:17:57

标签: java selenium-webdriver

我在切换到新窗口(Chrome浏览器)后面临定位元素的问题。

我正在使用的代码:

     for(String windowHandle  : handles)
       {
      if(!windowHandle.equals(parentWindow))
           {
              driver.switchTo().window(windowHandle);
              System.out.println(driver.getCurrentUrl()); //returns me the URL of the newly opened window
              driver.findElement(By.css("elementCSS")).click(); //returning error 'unable to locate element'
       }
}

切换到新窗口后,findElement()无法找到新元素,而新窗口的url和driver.getTitle()返回新打开窗口的正确值。 我试过xpath而不是CSS,但没有运气。 当我直接启动该窗口URL而不是从不同窗口切换时,相同的元素工作正常。 有人可以帮我吗?

1 个答案:

答案 0 :(得分:0)

以下是您的问题的答案:

正如您所提到的foreach(var connstring in connstrings) { // Create connection to database MySql.Data.MySqlClient.MySqlConnection dbConn = new MySql.Data.MySqlClient.MySqlConnection(connstring); MySqlCommand cmd = dbConn.CreateCommand(); cmd.CommandText = @"[same script here]"; try { dbConn.Open(); cmd.ExecuteNonQuery(); } catch (Exception erro) { Console.WriteLine(erro.ToString()); } } ,这实际上意味着Same element works fine when I directly launching that window url instead of switching from different window中存在元素,但不是HTML DOMvisible。这个问题可能会出现,因为clickable刚刚获得焦点的新窗口只有switchTo()。所以我们需要等待Selenium上的元素呈现。

解决方案:

在这种情况下的解决方案是诱导HTML DOM如下:

WebDriverWait

如果这回答你的问题,请告诉我。