我使用Selenium WebDriver.我打开第一页然后打开第二页 - 执行一些操作并返回第一页.在我想要关闭第二页之前,我使用命令driver.close();,但它会关闭第一页而不是第二页.如何使Selenium关闭特定窗口?
部分代码
String HandleBefore = driver.getWindowHandle();
driver.findElement(By.xpath("...")).click();
for (String twohandle : driver.getWindowHandles()) {
driver.switchTo().window(twohandle);
}
driver.findElement(By.linkText("001")).click();
driver.close();
Run Code Online (Sandbox Code Playgroud) 我创建了一个播放器,它将使用selenium和C#中的ChromeDriver自动化chrome.它工作正常.
发布我面临的问题是,当它为ChromDriver创建一个对象时,它将启动ChromeDriver应用程序,该应用程序会弹出,然后Chrome将加载.它非常完美,因为该应用程序正在为我加载chrome.
无论如何,我可以打开隐藏的ChromeDriver吗?
如何在网络驱动程序中设置Firefox版本?我只想用不同版本的Firefox.
喜欢不同的版本19,20,21 ....
请提供一个通用的解决方案,也可以帮助其他浏览器.
我的屏幕上有很多单选按钮.选择单选按钮时,它具有已检查的属性.未选择单选按钮时,不存在checked属性.我想创建一个方法,如果元素不存在将通过.
我正在使用selenium webdriver和java.我知道我可以通过使用来检索属性getSingleElement(XXX).getAttribute(XXX).我只是不确定如何验证属性不存在,以及测试在不存在时传递(如果确实存在则失败).
选中单选按钮时
<input id="ctl00_cphMainContent_ctl00_iq1_response_0" type="radio" name="ctl00$cphMainContent$ctl00$iq1$response" value="1" checked="checked">
Run Code Online (Sandbox Code Playgroud)
未选中单选按钮时
<input id="ctl00_cphMainContent_ctl00_iq1_response_0" type="radio" name="ctl00$cphMainContent$ctl00$iq1$response" value="1">
Run Code Online (Sandbox Code Playgroud)
我希望在checked属性不存在时传递测试
哪个是打开Url的首选方法(并且幕后有任何差异):
driver.Url = "http://example.com";
Run Code Online (Sandbox Code Playgroud)
要么
driver.Navigate().GoToUrl("http://example.com");
Run Code Online (Sandbox Code Playgroud)
此外,如果驱动程序已经指向同一页面,是否会再次设置Url会导致页面刷新?
即
...
driver.Url = "http://example.com";
driver.Url = "http://example.com"; //does this reload the page?
...
Run Code Online (Sandbox Code Playgroud)
FWIW我正在使用Chrome驱动程序chromedriver.exe,但它似乎不是一个托管程序集(我尝试用ILSpy打开它但没有运气).
我正在尝试启动 selenium webdriver 实例,但出现此错误:
SessionNotCreatedError: session not created: This version of ChromeDriver only supports Chrome version 97 Current browser version is 100.0.4896.75 with binary path *path here*
Run Code Online (Sandbox Code Playgroud)
我已经尝试使用 chromium 98,它可以工作,但是在版本 100 中发现了一个新漏洞,我想更新
使用Selenium WebDriver检查URL GET是否成功返回(HTTP 200)最方便的方法是什么?
在这种特殊情况下,我最感兴趣的是验证当前页面的图像是否被破坏.
在我的应用程序中,当我打开页面XI期望看到元素A或元素B.它们被放置在DOM中的不同位置并且可以使用它们的ID找到,例如 driver.findElement(By.id("idA"))
如何让webdriver找到A或B?
driver.findElements(By)当找到至少一个元素时,有一种方法会停止等待,但这种方法迫使我对A和B使用相同的定位器.
可靠地找到A或B的正确方法是什么,这样我就不必等待隐式超时?
在webdriver独立服务器中运行自动化时,我会随机获得此异常.一旦它到来,我杀了所有java进程.那么这个例外的解决方案是什么?为什么它是随机的?
不幸的是据我所知,所有人都建议使用最新版本的selenium jar或者来兼容firefox版本,具体取决于selenium版本,或者他们已经说要检查该端口是否正在使用(虽然它不会!)或重启系统.很少有人建议卸载firefox版本并重新安装它.任何永久的解决方案或任何想法为什么会来?
org.openqa.selenium.WebDriverException: Unable to bind to locking port 7054 within 45000 ms
Build info: version: '2.30.0', revision: 'dc1ef9c', time: '2013-02-19 00:15:27'
System info: os.name: 'Windows 7', os.arch: 'x86', os.version: '6.1', java.version: '1.7.0'
Driver info: driver.version: FirefoxDriver
Command duration or timeout: 47.94 seconds
Build info: version: '2.28.0', revision: '18309', time: '2012-12-11 15:53:30'
System info: os.name: 'Windows 7', os.arch: 'x86', os.version: '6.1', java.version: '1.7.0'
Driver info: org.openqa.selenium.remote.RemoteWebDriver
Run Code Online (Sandbox Code Playgroud) 所以我正在尝试创建一个使用Selenium自动化WebDriver在网站上执行任务的java程序.目前,我正在使用它进行工作,以便自动执行烦人的任务,用户必须将文件上传到我们的数据库.我已经成功地制作了一个自动执行此程序的程序,并节省了数小时的手动工作.
现在我想让程序并行运行多个浏览器.我想这样做是为了加快我上传文件的速度,因为大部分时间都在等待页面加载.
我用一个更简单的程序版本对此进行了测试,并通过使用自己的WebDrivers打开了数十到数百个线程,设法将简单任务加速了2-10倍.
问题是,每当我运行超过1个 WebDriver时,整个事情有时会开始随机发生,而在其他时候根本不起作用.我尝试使用'PhantomJSDriver'和最新的'PhantomJS.exe',但有时它会起作用,而且大多数时候它什么都不做.与一个驱动程序运行完美运行的相同程序在并行运行时会发生故障.
我一直试图找到原因,为什么会发生这种情况以及解决这个问题的方法,但我还没有找到任何可以使用的确定方法.
如果可能的话,我如何与Selenium并行进行自动化网页浏览,如果没有,为了做到这一点,我应该在哪里寻找?