我试图通过IE运行selenium,但得到错误

时间:2015-01-25 07:03:43

标签: selenium selenium-webdriver

这是我的代码:

import org.openqa.selenium.By;

import org.openqa.selenium.ie.InternetExplorerDriver;


public class Google_ie {

    public static void main(String[] args) {
        System.setProperty("webdriver.ie.driver", "E:\\Testing\\IEDriverServer.exe");
        InternetExplorerDriver fd = new InternetExplorerDriver();
        fd.get("http://www.google.com");
        fd.findElement(By.name("q")).sendKeys("selenium");
        fd.findElement(By.name("btnG")).click();

    }

}

这是我得到的例外:

Exception in thread "main" org.openqa.selenium.NoSuchElementException: 
Unable to find element with name == q (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 360 milliseconds
For documentation on this error, please visit: http://seleniumhq.org/exceptions/no_such_element.html
Driver info: org.openqa.selenium.ie.InternetExplorerDriver
Capabilities [{platform=WINDOWS, javascriptEnabled=true, elementScrollBehavior=0, ignoreZoomSetting=false, enablePersistentHover=true, ie.ensureCleanSession=false, browserName=internet explorer, enableElementCacheCleanup=true, unexpectedAlertBehaviour=dismiss, version=11, ie.usePerProcessProxy=false, cssSelectorsEnabled=true, ignoreProtectedModeSettings=false, requireWindowFocus=false, handlesAlerts=true, initialBrowserUrl=http://localhost:13289/, ie.forceCreateProcessApi=false, nativeEvents=true, browserAttachTimeout=0, ie.browserCommandLineSwitches=, takesScreenshot=true}]
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
    at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:204)
    at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:156)
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:599)
    at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:352)
    at org.openqa.selenium.remote.RemoteWebDriver.findElementByName(RemoteWebDriver.java:425)
    at org.openqa.selenium.By$ByName.findElement(By.java:299)
    at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:344)
    at automation.Google_ie.main(Google_ie.java:13)

请建议!!!

我甚至已经花了一些时间来检查

的Thread.sleep

但仍然收到错误!!!

2 个答案:

答案 0 :(得分:0)

似乎是IExplorer配置问题。您必须按照以下步骤操作:

  • 必须下载IEDriverServer exectuable并将其放入PATH。
  • 在Windows Vista或Windows 7上的IE 7或更高版本中,必须将每个区域的保护模式设置设置为相同的值。只要每个区域的值相同,该值就可以打开或关闭。要设置保护模式设置,请选择" Internet选项..."从“工具”菜单中,单击“安全”选项卡。对于每个区域,选项卡底部都会显示一个复选框,标记为"启用保护模式"。
  • 此外,"增强保护模式" IE 10及更高版本必须禁用。此选项位于“Internet选项”对话框的“高级”选项卡中。 浏览器缩放级别必须设置为100%,以便可以将本机鼠标事件设置为正确的坐标。
  • 仅对于IE 11,您需要在目标计算机上设置一个注册表项,以便驱动程序可以维护与其创建的Internet Explorer实例的连接。对于32位Windows安装,您必须在注册表编辑器中检查的密钥是HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BFCACHE。对于64位Windows安装,密钥为HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BFCACHE。请注意,FEATURE_BFCACHE子项可能存在也可能不存在,如果不存在,则应创建该子项。要点:在此项中,创建名为iexplore.exe的值为0的DWORD值。

Source

答案 1 :(得分:0)

始终尝试将保护模式保持为真,这有5个安全原因,并且此错误将得到解决。 所以从这个链接中读取它 http://www.abodeqa.com/2014/11/26/challenges-to-run-selenium-webdriver-scripts-in-ie-browser/