我正在尝试导航到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
请注意提供程序化解决方案的可能性,而不是手动更改互联网选项。
答案 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);
是可选的