在我的方案中,我正在验证点击链接是否导航到另一个页面(验证页面标题)。 IE , FF 和 chrome 按预期返回2但 Opera 返回4.我没有任何运行测试时打开的其他Opera实例。它点击链接并打开所需页面,但WindowHandles返回4.
代码:
string BaseWindow = Drivers._driverInstance.CurrentWindowHandle;
Drivers._driverInstance.SwitchTo().Frame(Drivers._driverInstance.FindElement(By.ClassName("iframe-fix")));
if (Drivers._driverInstance.GetType().Name.ToString() == "InternetExplorerDriver")
{
IJavaScriptExecutor js = (IJavaScriptExecutor)Drivers._driverInstance;
js.ExecuteScript("arguments[0].click();", Drivers._driverInstance.FindElement(By.LinkText("Professional Services.")));
}
else
{
Drivers._driverInstance.FindElement(By.LinkText("Professional Services.")).Click();
}
System.Collections.ObjectModel.ReadOnlyCollection<string> handles = Drivers._driverInstance.WindowHandles;
if (handles.Count == 2)
{
foreach (string handle in handles)
{
if (handle != BaseWindow)
{
string title = Drivers._driverInstance.SwitchTo().Window(handle).Title;
Assert.AreEqual("title of the page", Drivers._driverInstance.Title);
}
}
}
else
{
Assert.Fail("WindowHandles returns " + handles.Count + " instead of 2");
}
Drivers._driverInstance.SwitchTo().Window(BaseWindow);
有人可以建议为什么Opera会返回4而不是2。
感谢。
答案 0 :(得分:1)
Opera驱动程序没有返回正确数量的句柄。该问题已经报告给该项目,但似乎不再维护该项目:
https://github.com/operasoftware/operachromiumdriver/issues/15
答案 1 :(得分:0)
我遇到了与Opera驱动程序相同的事情,加上(如果我没记错),var trace1 = {
x: [1, 2, 3, 4],
y: [10, 15, 13, 17],
type: 'scatter'
};
var trace2 = {
x: [1, 2, 3, 4],
y: [16, 5, 11, 9],
type: 'scatter'
};
var data = [trace1, trace2];
Plotly.newPlot('myDiv', data);
属性也不起作用。
解决方法:
CurrentWindowHandle