单击按钮作为以下操作,该测试在IE-11中失败(一种形式弹出)。我无法手动重复此操作,而这似乎仅在IE-11中发生。查找按钮或单击按钮时不会引发异常。这是一个间歇性错误,因为有时单击会起作用,并且测试会运行。
我可以在单击发生之前明确等待,然后才能运行测试。
该按钮始终存在于DOM中(以后不会由javascript添加)。
我还添加了一个检查,以便直到最终,网络驱动程序才会开始与页面进行交互(单击)初始javascript已在页面上运行完毕。这是通过最后一个javascript设置标志来完成的。
有人遇到过类似的问题吗?
编辑
我不想等待测试代码。只需将它们放入调试不起作用的地方
#1 楼
检查此代码。它在IE中正常工作。您只需设置一些功能即可。DesiredCapabilities ieCapabilities = DesiredCapabilities.internetExplorer();
ieCapabilities.setCapability("nativeEvents", false);
ieCapabilities.setCapability("unexpectedAlertBehaviour", "accept");
ieCapabilities.setCapability("ignoreProtectedModeSettings", true);
ieCapabilities.setCapability("disable-popup-blocking", true);
ieCapabilities.setCapability("enablePersistentHover", true);
driver = new InternetExplorerDriver(ieCapabilities);
评论
可能是弹出窗口阻止功能?
– Yamikuronue
15年5月15日在12:30
这为我产生了一个构建错误,它期望一个字符串用于重载。这为其他人建造吗?
–DEnumber50
16年11月8日在18:33
#2 楼
我个人将等待,然后在等待中尝试单击,然后验证弹出窗口是否存在,捕获错误,然后尝试单击并再次验证。这样,一旦准备就绪,它将返回并且您不使用计时器。无论如何,这都是一个好习惯,不仅要等待特定的时间,还要等待特定的事件发生然后继续进行。评论
我明白你的意思了。单击并查看是否显示弹出窗口,如果没有,则再次单击。然后,我担心的是它可能会隐藏按钮无法正常工作的其他问题。
–琼·达菲(Jon Duffy)
2014年8月21日在9:44
是的,您需要等待所有这些。在此期间可能记录任何“已知”问题……尽管不要每次都记录日志,否则您的日志可能会长得很长。但是您可以添加所需的任何内容,以确保弹出执行部分中的所有功能都是准确的。然后再返回常规测试。我知道这可行,但是您必须确保所有鸭子都排成一排。如果您对某些特定的内容感到紧张并希望获得指导,请使用该新信息更新您的问题。
– Mutt
2014年8月21日在12:09
因此,为了澄清一下,您是否建议测试应该尝试完成,并且应该记录问题中的任何“异常行为”。也许这应该是另一个问题,但是,您如何以及何时决定将时间花在“记录”与开发新测试等问题上?
–琼·达菲(Jon Duffy)
14年8月21日在14:58
我想将其作为一个单独的问题,并提供该问题的更多细节。涉及大量的变量,并且大多数变量将特定于您的测试/目标/报告/要求/等...通常,对于每次运行,测试最好尽其所能,并记录/报告特定问题运行时。这将帮助很多,而不仅仅是每个失败的测试都失败,然后必须手动执行以查找问题并解决问题。
– Mutt
2014年8月21日在15:55
#3 楼
对于Selenium 3.0.1,我按如下进行设置,并且适用于IE11。InternetExplorerOptions caps = new InternetExplorerOptions();
caps.IgnoreZoomLevel = true;
caps.EnableNativeEvents = false;
caps.InitialBrowserUrl = "http://localhost";
caps.UnexpectedAlertBehavior = InternetExplorerUnexpectedAlertBehavior.Accept;
caps.IntroduceInstabilityByIgnoringProtectedModeSettings = true;
caps.EnablePersistentHover = true;
IWebDriver driver = new InternetExplorerDriver(caps);
#4 楼
单击页面下的细分,然后单击元素时,我也遇到相同的问题,但无法单击。我有一个对我有用的解决方案,希望下面的答案也对您有用。添加代码段。
DesiredCapabilities caps = DesiredCapabilities.internetExplorer();
caps.setCapability("ignoreZoomSetting", true);
// Setting attribute nativeEvents to false enable click button in IE
caps.setCapability("nativeEvents",false);
WebDriver driver = new InternetExplorerDriver(caps);
这将使IE变淡浏览器的本机元素。据我所知,原生元素,即禁用通常在点击事件中显示的Java脚本。
请尝试一下,如果有更好的建议可以在此处进行更新,请在此进行更新。
#5 楼
您可以尝试使用JS单击它,JavaScriptLibrary.CallEmbeddedSelenium(driver, "triggerMouseEventAt", element, "click", "0,0");
我想如果禁用本机事件会使测试的其他部分停止,用js单击可能是解决方法,它确实至少为我工作
#6 楼
请尝试以下步骤:在Windows中打开显示设置(右键单击桌面,选择“显示设置”)
设置选项“更改文本,应用程序和其他项目的大小”达到100%。
完成此步骤后,Click()方法应该可以使用。
#7 楼
我尝试了javascript click,它对我有用。希望它也对您也有用:WebElement we = driver....
((JavascriptExecutor) driver).executeScript("arguments[0].click();",we)
如果您要单击任何链接或按钮,可以使用此
#8 楼
一种解决方法是将此硒与Sikuli一起使用。这样,您可以模拟真正的鼠标单击。http://www.devengineering.com/blog/testing/how-integrate-sikuli-script-selenium-webdriver
Sikuli是一个强大而强大的工具,可以自动化和测试用户界面屏幕截图。 Sikuli Script的核心是用Java编写的,这意味着您可以将Sikuli Script用作Selenium的标准JAVA库。上面的链接显示了有关如何执行此操作的详细信息。
评论
您能否进一步阐明您的答案,以便它专门针对此问题而量身定制。尽管链接是相关的,但是您可以在答案中包含特定信息吗?
– ECiurleo
16/12/19在9:26
评论
我发现间歇性IE错误通常是页面加载(您的里程可能有所不同)。如果在页面上使用页面对象模型,可以在单击之前将元素作为对象并进行验证吗?我获得了比等待更好的成功。我正在使用页面对象模型并在尝试单击它之前捕获了一个WebElement ...
除了IE的脆弱性之外,如果找不到明显的错误,请打开日志记录,看看是否有任何东西。我一直都有IE测试失败并通过重新运行的情况,这是自动化最严重的部分之一,有时测试由于某些显而易见的原因会失败
我认为阅读IE10和IE11之间的差异可能会有所帮助。 msdn.microsoft.com/library/ie/dn384059这不是快速阅读,但似乎应用程序中的某些内容在两者与Selenium之间的处理方式有所不同。您可以在IE11和IE10中查找控件的用法,并查看可能存在的差异。这是我不使用等待即可想到的最佳途径...然后您可能仍会等待,因为您可能无法修复应用程序。
对于OP,您是如何做到这一点的。我正面临类似的问题