在IE 10中使用selenium元素单击无法正常运行

时间:2014-07-17 23:51:37

标签: internet-explorer selenium selenium-webdriver browser-automation

我正在尝试使用IE 10中的selenium自动化网站。 该网站打开正常,但是当我想点击一个元素(按钮)时,它会找到该元素并点击它,但是需要更改的元素状态(按钮名称更改)不会改变。

这是我的代码。

   File file = new File("D:/IEDriverServer.exe");
   System.setProperty("webdriver.ie.driver", file.getAbsolutePath() );

   DesiredCapabilities capabilities = DesiredCapabilities.internetExplorer();
   capabilities.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS,
   true); 

   WebDriver driver = new InternetExplorerDriver(capabilities);
   driver.get("http://www.midomi.com");
   driver.findElement(By.id("searchMovielanding")).click();

我尝试了两台机器。在一台机器上代码正常运行而在另一台机器上没有看到click事件改变元素状态。我检查了网页上的元素并发现它然后不知道为什么它没有在一台机器上正确点击它。

  if(driver.findElements(By.id("searchMovielanding")).size() != 0) {
 System.out.println("Element Found");
 }

任何有助于解决此问题的帮助。

8 个答案:

答案 0 :(得分:8)

尝试以下内容。

driver.findElement(By.id("searchMovielanding")).sendKeys(KEYS.ENTER);

在IE中,有时点击不起作用。

答案 1 :(得分:2)

这实际上是Selenium InternetExplorerDriver中的一个缺陷,他们目前没有计划解决它。该链接还有一些建议的解决方法。然而,它们对我来说效果不佳。如果我能找到任何东西,我会更新。 https://code.google.com/p/selenium/issues/detail?id=4403

答案 2 :(得分:1)

以下技巧对我有用。在浏览器选择

的位置添加代码段
// Setting attribute native Events to false enable click button in IE
DesiredCapabilities caps = DesiredCapabilities.internetExplorer(); caps.setCapability("ignoreZoomSetting", true);
caps.setCapability("nativeEvents",false);
WebDriver driver = new  InternetExplorerDriver(caps);

答案 3 :(得分:1)

加上以前的答案。使用以下解决方案点击链接

driver.findElement(By.id("searchMovielanding")).sendKeys(KEYS.ENTER);

但是,在单击按钮之前,ENTER键将触发HTML表单上的提交。另一方面,SPACE键单击一个按钮并且不提交表单(除非该按钮应该是这样做的)。因此,建议您使用以下按钮

driver.findElement(By.id("searchMovielanding")).sendKeys(KEYS.SPACE);

答案 4 :(得分:0)

我建议不要使用

capabilities.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS, true);

因为它绕过了IE浏览器中的保护模式设置。在此处阅读更多内容:http://jimevansmusic.blogspot.in/2012/08/youre-doing-it-wrong-protected-mode-and.html

如果您在运行时遇到任何错误而未在代码中设置上述功能,请确保您已按照所有必需的配置进行操作:https://code.google.com/p/selenium/wiki/InternetExplorerDriver#Required_Configuration

现在,重新运行测试并分享您的体验。

答案 5 :(得分:0)

使用IJavaScriptExecutor解决了多次点击IE的问题。正如在我的情况下,当我试图点击我的应用程序的左框架中的元素时,它点击了不需要的链接,但我能够通过使用下面的代码点击所需的元素

IWebElement element_xpathAddVar = Browser.Driver.FindElement(By.XPath("//*[@id='td_48']/a"));
js.ExecuteScript("arguments[0].click();", element_xpathAddVar);

答案 6 :(得分:0)

我对IE 11也有同样的问题。希望这对你也有用。

capabilities.setCapability("nativeEvents",false);
capabilities.setCapability("ignoreZoomSetting", true);

如果它不起作用,请尝试使用javascript执行单击作为解决方法。

答案 7 :(得分:0)

我过去遇到过同样的问题,建议使用Actions类点击IE10或IE11

Actions act = new Actions(driver);
WebElement p=driver.findElement(By.id("element id"));
act.click(p).build().perform();

您也可以将Javascript Executor用于相同的

JavascriptExecutor jse = (JavascriptExecutor)driver;
jse.executeScript("return document.getElementById('ELEMENT ID').click();");