Mer*_*yem 5 python selenium internet-explorer selenium-webdriver selenium-iedriver
由于某种原因,我一直在努力使用在 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();
Run Code Online (Sandbox Code Playgroud)
但是,由于我已经在 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()
Run Code Online (Sandbox Code Playgroud)
但是由于某种原因,selenium 仍然无法找到搜索栏,所以我猜我在 python 中写的等价物是不正确的,有人可以指出我正确的方向吗?
您必须注意以下几个事实:
DesiredCapabilities.INTERNETEXPLORER您需要使用而不是使用DesiredCapabilities.INTERNETEXPLORER.copy()。注意:始终附加
.copy()到DesiredCapability对象上,以避免更改 Global 类实例的副作用。
executablePath()没有任何有效的论点。executable_path相反,在初始化WebDriver / WebClient时传递参数。introduceFlakinessByIgnoringSecurityDomains() @JimEvans中的讨论,明确提到添加可能会让您克服最初的异常,并允许测试在大多数情况下运行,而无需事件。然而,使用此功能并不能解决根本问题。如果跨越保护模式边界,则可能会发生非常意外的行为,包括挂起、元素位置不起作用以及点击未传播。INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS当您将字符序列发送到Google 搜索框而不是presence_of_element_located()使用方法时element_to_be_clickable()。
这是您自己的代码,经过一些修改:
from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
cap = DesiredCapabilities.INTERNETEXPLORER.copy()
cap['INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS'] = True
driver = webdriver.Ie(capabilities=cap, executable_path=r'C:\Utility\BrowserDrivers\IEDriverServer.exe')
driver.get('https://google.com')
search = WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.NAME, 'q')))
search.send_keys("selenium")
search.submit()
Run Code Online (Sandbox Code Playgroud)在这里您可以找到有关启动 Internet Explorer 时出现意外错误的详细讨论。IELaunchURL() 使用 Selenium 3.13.0 返回 HRESULT 80070012:IEDriverServer_x64_3.13.0
| 归档时间: |
|
| 查看次数: |
4274 次 |
| 最近记录: |