如何在Selenium和Python中通过IEDriverServer使用DesiredCapabilities类
我一直在为一个在IE11中工作的简单python脚本而挣扎,由于某种原因,它无法找到任何元素,但是通过在它工作的java代码中设置一些所需的功能:如何在Selenium和Python中通过IEDriverServer使用DesiredCapabilities类,python,selenium,internet-explorer,selenium-webdriver,selenium-iedriver,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.setCa
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()
但是由于某些原因,selenium仍然无法找到搜索栏,因此我猜我用python编写的等价物是不正确的,有人能给我指出正确的方向吗?您必须注意以下几个事实:
- 您需要使用
而不是DesiredCapabilities.INTERNETEXPLORER
DesiredCapabilities.INTERNETEXPLORER.copy()
.copy()
,以避免更改全局类实例的副作用
- 根据
不是任何有效参数。而是在初始化WebDriver/WebClient时传递参数executablePath()
executable\u path
- 由于您添加了选项
,根据@JimEvans博客中的讨论,添加introducteFlakinessByIgnoringSecurityDomains()
可以让您通过初始异常,并允许测试在大多数情况下运行而不会发生意外。但是,使用此功能并不能解决根本问题。如果跨越受保护模式边界,可能会发生非常意外的行为,包括挂起、元素位置不工作以及未传播的单击introduction\u FLAKINESS\u BY\u ignore\u SECURITY\u DOMAINS
- 当您向Google搜索框发送字符序列而不是
方法时,请使用presence\u of_element\u located()
方法element\u to_be\u 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()
浏览器快照
参考文献 在这里,您可以找到有关可能重复的