无法找到具有id的元素:仅在IE上执行时才会出现问题。适用于Firefox

时间:2014-09-30 17:39:30

标签: internet-explorer selenium-webdriver

我的代码如下:

package ie;

import java.io.File;



import java.util.concurrent.TimeUnit;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.ie.InternetExplorerDriver;

public class ieproject{

 public static void main(String[] args) { 

  System.setProperty("webdriver.ie.driver", "D:\\Selenium\\IEDriverServer.exe");
  WebDriver driver = new InternetExplorerDriver();
  driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS );
  try
  {
  driver.get("http://demo.actitime.com");
  driver.findElement(By.id("username")).sendKeys("admin");

  }
  catch(Exception e)
  {
      e.printStackTrace();
  }

  driver.quit();
 }

}

运行时遇到异常:

启动InternetExplorerDriver服务器(64位) 2.43.0.0 在港口35578上听 log4j:WARN没有为logger找到appender(org.apache.http.client.protocol.RequestAddCookies)。 log4j:WARN请正确初始化log4j系统。 log4j:WARN有关详细信息,请参阅/logging.apache.org/log4j/1.2/faq.html#noconfig。 org.openqa.selenium.NoSuchElementException:无法找到id == username的元素(警告:服务器未提供任何堆栈跟踪信息) 命令持续时间或超时:15.22秒 有关此错误的文档,请访问:/seleniumhq.org/exceptions/no_such_element.html 构建信息:版本:'2.43.0',修订版:'597b76b',时间:'2014-09-09 20:52:14' 系统信息:主机:'AJITKUMAR-PC',ip:'192.168.1.5',os.name:'Windows 7',os.arch:'amd64',os.version:'6.1',java.version:'1.8 .0_20' 驱动程序信息:org.openqa.selenium.ie.InternetExplorerDriver Capabilities [{browserAttachTimeout = 0,enablePersistentHover = true,ie.forceCreateProcessApi = false,ie.usePerProcessProxy = false,ignoreZoomSetting = false,handlesAlerts = true,version = 11,platform = WINDOWS,nativeEvents = true,ie.ensureCleanSession = false,elementScrollBehavior = 0,ie.browserCommandLineSwitches =,requireWindowFocus = false,browserName = internet explorer,initialBrowserUrl,takesScreenshot = true,javascriptEnabled = true,ignoreProtectedModeSettings = false,enableElementCacheCleanup = true,cssSelectorsEnabled = true,unexpectedAlertBehaviour = dismiss}] 会议ID:892cecb0-ba03-48f6-a29e-7eb7c56da813     at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)     at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)     at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)     at java.lang.reflect.Constructor.newInstance(Unknown Source)     在org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:204)     在org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:156)     在org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:599)     在org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:352)     在org.openqa.selenium.remote.RemoteWebDriver.findElementById(RemoteWebDriver.java:393)     在org.openqa.selenium.By $ ById.findElement(By.java:214)     在org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:344)     在ie.ieproject.main(ieproject.java:28)

1 个答案:

答案 0 :(得分:0)

我也遇到了IE11和Selenium的麻烦 - 有时网络驱动程序找不到元素,但在其他浏览器(chrome,firefox)中,对于相同的测试都可以正常工作。

我找到了这个解决方案:你需要创建(如果它不存在)注册表项 - HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BFCACHEDWORD值,其中包含名称iexplore.exe和值数据0。

对于x64系统 - 使用密钥HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BFCACHE

执行相同操作