我在切换到新窗口(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而不是从不同窗口切换时,相同的元素工作正常。 有人可以帮我吗?
答案 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 DOM
或visible
。这个问题可能会出现,因为clickable
刚刚获得焦点的新窗口只有switchTo()
。所以我们需要等待Selenium
上的元素呈现。
在这种情况下的解决方案是诱导HTML DOM
如下:
WebDriverWait
如果这回答你的问题,请告诉我。