Selenium Webdriver IE无法找到元素

时间:2016-05-11 18:56:19

标签: java google-chrome internet-explorer selenium selenium-webdriver

我正在尝试导航到www.google.com并使用带有Internet Explorer(IE)的Selenium webdriver将一些输入发送到搜索框。

static WebDriver webDriver = null;
static DesiredCapabilities IEDesiredCapabilities = DesiredCapabilities.internetExplorer();

System.setProperty("webdriver.chrome.driver", TestConstants.chromeDriverFilePath);
System.setProperty("webdriver.ie.driver", TestConstants.IEDriverFilePth);

IEDesiredCapabilities.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS,
            true);
webDriver = new InternetExplorerDriver(IEDesiredCapabilities);
//webDriver = new ChromeDriver();

webDriver.navigate().to("http://www.google.com");
webDriver.findElement(By.name("q")).sendKeys("Venkatesh Kolisetty");
//webDriver.findElement(By.id("lst-ib")).sendKeys("Venkatesh Kolisetty");

当我使用Chrome时,这段代码运行得非常好,但在使用IE时会抛出org.openqa.selenium.NoSuchElementException

  

这将打开由selenium打开的IE浏览器中所需的网页。问题是,只有在使用IE时才加载页面后,selenium无法找到任何元素。对于chrome,它会找到所需的元素。

是否可以在IEDesiredCapabilities

中添加任何功能

请注意提供程序化解决方案的可能性,而不是手动更改互联网选项。

2 个答案:

答案 0 :(得分:0)

是的,当您使用IE时,这是常见问题。

打开regedit.exe

打开HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Internet Settings \ Zones

所以区域将包含0,1,2,3,4,在右侧,只要您点击0即可看到三列,即名称类型数据

现在在Name列中查找2500双击它。将值数据设置为3,将Base设置为十六进制

你这样做了0。

现在重复1,2,3,4 ..

的相同步骤

为所有人做这件事,即0,1,2,3,4,5 =>将所有2500的值数据更改为3。

之后运行此代码。

public static void main(String[] args) throws InterruptedException {

    System.setProperty("webdriver.ie.driver", "D:\\Selenium\\CP-SAT\\IEDriver\\IEDriverServer.exe");

    WebDriver driver = new InternetExplorerDriver();
    driver.get("www.google.com");

它将在IE上运行。你需要一个IEDriverServer.exe,就像我在路径中显示的那样,它将运行你的IE浏览器。

回复我以进一步查询。我在eclipse中运行了上面的代码并且运行成功。

快乐学习: - )

答案 1 :(得分:0)

在添加一些必需功能后问题已解决。

IEDesiredCapabilities.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS, true);
IEDesiredCapabilities.setCapability(InternetExplorerDriver.INITIAL_BROWSER_URL, "http://www.google.com");
IEDesiredCapabilities.internetExplorer().setCapability("ignoreProtectedModeSettings", true);
IEDesiredCapabilities.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
IEDesiredCapabilities.setJavascriptEnabled(true);
//IEDesiredCapabilities.setCapability("requireWindowFocus", true);
IEDesiredCapabilities.setCapability("enablePersistentHover", false);

IEDesiredCapabilities.setCapability("requireWindowFocus", true);是可选的