我正在尝试使用Java和Selenium来测试需要客户端证书的网站.当我浏览到我的网站时,我会得到一个类似下面的弹出窗口,以选择正确的证书.
我的要求如下:
理想情况下弹出窗口从未显示过; 即,解决方案将涉及调用某些API或设置一些配置以固定要使用的正确证书.
我尝试了一个基于使用SikuliX可视化检测正确证书的解决方案(这确实有效),但我想知道是否有更好的解决方案不依赖于视觉检测弹出窗口.如果微软决定改变这个弹出窗口的外观,那么在Windows的多个版本中出现故障的可能性较小,这是未来的证据.
我有的另一个想法(但我不知道如何/是否可能)是删除所有已安装的证书,除了一个,以便永远不会显示弹出窗口:
有谁知道如何做到这一点(在Java中,可能会调用CLI命令)?
是否可以启动(使用Selenium Java)一个只知道我需要的单一证书的Internet Explorer窗口?
是否可以在Internet Explorer中为给定域设置默认证书?
java internet-explorer selection client-certificates selenium-iedriver
对于Chrome,
public class Chrome {
public static void main(String[] args) {
System.setProperty("webdriver.chrome.driver", "E://chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.get("http://www.google.com");
}
}
Run Code Online (Sandbox Code Playgroud)
对于Firefox,
public class Firefox {
public static void main(String[] args) {
WebDriver driver = new FirefoxDriver();
driver.get("http://www.google.com");
}
}
Run Code Online (Sandbox Code Playgroud)
为什么我们需要system.setProperty
为Chrome和IE 指定?
selenium selenium-chromedriver selenium-webdriver selenium-iedriver
我们正准备将我们的自动化节点迁移到Windows 10,在我们的测试中,我们发现尽管我们的脚本在FF,IE和Chrome上的Win7上运行良好,但它们在Windows 10上仅在IE上失败(适用于FF和Chrome) ).
当运行agianst IE时,浏览器实例化并且webdriver能够看到浏览器(我尝试了一个简单的命令,如driver.back(),返回上一页).但是,我们无法获得任何find_element ...调用工作.无论是id,name,css,xpath等,脚本都会失败,说明找不到给定id/name/css/xpath的元素(无论我试图用什么方法来查找webelement).
我已经看到有关安全更新的帖子打破了这一点,并建议还原更新.这是一年前的事情,似乎随后的更新已经解决了这个问题.
我还阅读了有关确保所有区域的保护模式相同,注册表值等的帖子.这些建议都没有奏效.
以下是我正在使用的示例脚本(当修改为在Chrome或Firefox中运行时)仅在IE11中不起作用:
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
driver = webdriver.Ie()
driver.implicitly_wait(30)
driver.maximize_window()
# navigate to the application home page
driver.get("http://www.google.com")
# get the search textbox
search_field = driver.find_element_by_id("lst-ib")
Run Code Online (Sandbox Code Playgroud)
运行此脚本的错误是:
selenium.common.exceptions.NoSuchElementException: Message: Unable to find element with id == lst-ib
Run Code Online (Sandbox Code Playgroud) python selenium selenium-webdriver internet-explorer-11 selenium-iedriver
我正在使用Selenium IWebDriver
来编写C#中的单元测试.
这是一个例子:
IWebDriver defaultDriver = new InternetExplorerDriver();
var ddl = driver.FindElements(By.TagName("select"));
Run Code Online (Sandbox Code Playgroud)
最后一行检索包含在中的select
HTML元素IWebElement
.
我需要一种方法来模拟选择到option
该select
列表中的特定但我无法弄清楚如何做到这一点.
在一些研究中,我发现那里的人正在使用的实例ISelenium DefaultSelenium
类来完成以下,但因为我做的一切,我不会使这个类的使用IWebDriver
和INavigation
(来自defaultDriver.Navigate()
).
我还注意到,ISelenium DefaultSelenium
其中包含大量其他方法,这些方法在具体实现中没有IWebDriver
.
那么我有什么方法可以使用IWebDriver
并INavigation
与之结合使用ISelenium DefaultSelenium
?
我已经编写了一个示例代码来启动IE browser
和加载Google页面。
public class Sample {
public static void main(String[] args)
{
// TODO Auto-generated method stub
System.setProperty("webdriver.ie.driver","H:/IEDriverServer.exe");
WebDriver driver=new InternetExplorerDriver();
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(10,TimeUnit.SECONDS);
driver.get("http://www.google.com");
}
}
Run Code Online (Sandbox Code Playgroud)
但是,当我运行此脚本时,它将启动浏览器,并立即关闭(少于2秒),而不会提示任何错误,并且脚本不会终止。
这是我在控制台屏幕上看到的:
启动
InternetExplorerDriver
服务器(32位)2.53.1.0
在端口46974上侦听
仅允许本地连接
谁能在这个问题上帮助我?
这与我最近在Selenium上提出的其他问题有关(该问题与Firefox相关的问题有关,此问题与IE相关的问题有关)。
基本上,当我运行以下代码时
ieDriver.Navigate().GoToUrl("http://localhost:51282");
IWebElement linkToAboutPage = ieDriver.FindElement(By.Id("test"));
linkToAboutPage.Click();
Run Code Online (Sandbox Code Playgroud)
模拟点击链接,它成功导航到页面,但是当尝试检索实际元素时,出现以下异常:
An exception of type 'OpenQA.Selenium.NoSuchWindowException' occurred in WebDriver.dll but was not handled in user code
Additional information: Unable to find element on closed window
对此问题的可接受答案表明,应在“ IE安全设置”中将“启用保护模式”全部选中或全部取消选中。确实,当我查看这些设置时,未为Intranet选择“启用保护模式”,而为其他选择未选中:
不幸的是,如屏幕截图所示,这是由我的公司IT部门管理的,我不确定能否说服他们让我更改设置是否会很幸运。我也无法按照其他一些答案所建议的方式来编辑注册表(可能是由于缺乏管理权限)。
我见过的其他一些解决方案包括设置IntroduceInstabilityByIgnoringProtectedModeSettings
为true
,提供InitialBrowserUrl
或设置EnsureCleanSession
为true
。如下所示,我目前正在做所有这些事情:
var ieOptions = new InternetExplorerOptions()
{
InitialBrowserUrl = "http://www.google.com",
IntroduceInstabilityByIgnoringProtectedModeSettings = true,
IgnoreZoomLevel = true,
EnableNativeEvents = true,
EnsureCleanSession = true
};
ieDriver = new InternetExplorerDriver(ieOptions);
ieDriver.Manage().Timeouts().ImplicitWait = …
Run Code Online (Sandbox Code Playgroud) c# selenium internet-explorer selenium-webdriver selenium-iedriver
Firefox和Chrome工作正常但是使用IE 11,sendkey非常慢.你是如何解决这个问题的?
我的环境:
由于某种原因,我一直在努力使用在 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 中写的等价物是不正确的,有人可以指出我正确的方向吗?
python selenium internet-explorer selenium-webdriver selenium-iedriver
因此,我正在 IE11 中自动化 Web 应用程序(为政府合同欢呼三声!),并且我按照 Selenium Wiki 上的说明来配置该东西,因为我们遇到了一堆奇怪且不稳定的行为。我在这一步,它说我已经添加了一个注册表项来帮助维护驱动程序和浏览器之间的连接:
仅对于 IE 11,您需要在目标计算机上设置注册表项,以便驱动程序可以维持与其创建的 Internet Explorer 实例的连接。对于 32 位 Windows 安装,必须在注册表编辑器中检查的项是 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BFCACHE。对于 64 位 Windows 安装,密钥为 HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BFCACHE。请注意,FEATURE_BFCACHE 子项可能存在也可能不存在,如果不存在则应创建它。重要提示:在此注册表项内,创建一个名为 iexplore.exe 且值为 0 的 DWORD 值。
但它并没有真正解释为什么?如果没有添加此密钥会出现什么问题?“维护 IE 实例和网络驱动程序之间的连接”一词可能有很多不同的含义。
我们遇到的问题主要涉及 Selenium 方法,例如 .click() 不起作用或无法单击页面以供那些感兴趣的参考点使用。我们还遇到了一些奇怪的滚动问题,当元素刚刚离开屏幕时,它无法通过测试,这很奇怪,因为它应该读取 DOM,但我离题了。
c# selenium selenium-webdriver internet-explorer-11 selenium-iedriver
我正在尝试使用以下代码在本地计算机上启动 IE11 浏览器。
try{System.setProperty("webdriver.ie.driver", "src/main/resources/bin/IEDriverServer.exe");
}
catch (Exception ex){
Reporter.log("\nException in getting and setting the webdriver IE driver: "+ ex.getMessage() + ex.getClass(),true);
ex.printStackTrace();
}
WebDriverManager.browser = browser;
driver = new EventFiringWebDriver(new InternetExplorerDriver());
driver.manage().deleteAllCookies();
driver.manage().window().maximize();
Run Code Online (Sandbox Code Playgroud)
当我运行代码时,它会打开带有http://localhost:22414/的浏览器,但之后无法加载。下面附上日志。
org.openqa.selenium.remote.SessionNotFoundException: Unexpected error launching Internet Explorer. Browser zoom level was set to 125%. It should be set to 100% (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 2.16 seconds
Build info: version: '2.53.0', revision: '35ae25b1534ae328c771e0856c93e187490ca824', time: '2016-03-15 10:43:46' …
Run Code Online (Sandbox Code Playgroud) java selenium automation selenium-webdriver selenium-iedriver
我正在尝试编写一个简单的基于Java的硒代码,该代码将在其中加载页面,为用户名和密码提供所需的值并登录到网页。
现在,一旦网页加载,它会自动等待用户输入用户名,即用户名已经集中。所以我可以将密钥发送到这个已经集中的元素。将输入提供给用户名后,可以使用TAB选择下一个输入,即密码,然后再次使用TAB选择“登录”按钮。
我正在BrowserStack上运行Selenium测试,并且sendkeys命令未将指定的文本发送到输入字段。我注意到,此问题通常发生在诸如@,#等特殊字符的情况下。
我如何解决它?
我正在尝试使用 IE 在 java selenium 中进行测试,但我的问题是我必须继续在保护模式下配置设置,这是已弃用功能的替代方法
WebDriver driver = new InternetExplorerDriver(cap);
Run Code Online (Sandbox Code Playgroud)
因为我希望在没有人工交互的情况下实现此自动化。我在 Eclipse 中使用这段代码,它在我的代码中根本没有任何效果,上面是用黄线荧光笔勾勒出来的,这表明它已被弃用。那么是否有一个新函数可以实现此目的,这是我一直用于完整性检查的代码
DesiredCapabilities cap = DesiredCapabilities.internetExplorer();
cap.setCapability("nativeEvents", false);
cap.setCapability("unexpectedAlertBehaviour", "accept");
cap.setCapability("ignoreProtectedModeSettings", true);
cap.setCapability("disable-popup-blocking", true);
cap.setCapability("enablePersistentHover", true);
cap.setCapability("ignoreZoomSetting", true);
cap.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS,true);
Run Code Online (Sandbox Code Playgroud) java selenium selenium-webdriver selenium-iedriver mutablecapabilities
selenium ×12
java ×4
c# ×3
python ×2
automation ×1
browserstack ×1
selection ×1
selenium-ide ×1
unit-testing ×1
web ×1