由于某种原因,我一直无法在IE11中使用一个简单的python脚本,但是它找不到任何元素,但是通过在Java代码中设置一些所需的功能使其起作用:
System.setProperty("webdriver.ie.driver", "C:\\Python27\\IEDriverServer.exe");
DesiredCapabilities ieCapabilities = DesiredCapabilities.internetExplorer();
ieCapabilities.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS,true);
WebDriver driver = new InternetExplorerDriver(ieCapabilities);//
driver.navigate().to("http://www.google.com");
WebElement search =driver.findElement(By.name("q"));
search.sendKeys("selenium");
search.submit();
但是,由于我已经用python编写了测试,所以我想在python中使用相同的方法:
caps = DesiredCapabilities.INTERNETEXPLORER
caps['executablePath'] = 'C:\\Python27\\IEDriverServer.exe'
caps['InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS'] = True
browser = webdriver.Ie(capabilities=caps)
browser.get('https://google.com')
search = WebDriverWait(browser,10).until(EC.presence_of_element_located((By.NAME, 'q')))
search.send_keys("selenium")
search.submit()
但是由于某种原因,硒仍然无法找到搜索栏,所以我猜我在python中写的等效词是不正确的,有人可以指出我正确的方向吗?
答案 0 :(得分:2)
您必须注意以下两个事实:
$x()
而不是使用DesiredCapabilities.INTERNETEXPLORER
注意:始终在 DesiredCapabilities 对象上使用
DesiredCapabilities.INTERNETEXPLORER.copy()
,以避免更改Global类实例的副作用。
The Desired Capabilities implementation
.copy()
并不是有效的参数。初始化 WebDriver / WebClient 时,应传递参数executablePath
。executable_path
时,@ JimEvans再次明确提到添加introduceFlakinessByIgnoringSecurityDomains();
可能会使您摆脱最初的例外,并且可以在大多数情况下运行测试没有事件。但是,使用此功能并不能解决潜在的问题。如果越过保护模式边界,则会出现非常意外的行为,包括挂起,元素位置不起作用和点击未被传播,可能会发生。向 Google搜索框发送字符序列时,请使用 INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS
< / strong>方法。
这是您自己的代码,进行了一些修改:
presence_of_element_located()
浏览器快照: