在我的Ubuntu工作站上本地运行使用Firefox的Selenium(Webdriver)测试不再有效.
完全相同的设置之前工作,但我认为Firefox在某些时候升级(现在从Ubuntu包中升级到16.0.2 16.0.2+build1-0ubuntu0.11.04.1),之后它停止工作.在正常使用中,Firefox工作正常.
使用Webdriver,当我运行一个测试用例(通过我的IDE)时,会打开一个空的Firefox窗口,但测试无法启动.45秒后,它会超时,并显示以下错误消息:
org.openqa.selenium.firefox.NotConnectedException: Unable to connect to host 127.0.0.1 on port 7055 after 45000 ms. Firefox console output:
*** LOG addons.xpi: startup
*** LOG addons.xpi: Ignoring file entry whose name is not a valid add-on ID: /tmp/anonymous5012217980260937474webdriver-profile/extensions/webdriver-staging
*** LOG addons.xpi: checkForChanges
*** LOG addons.xpi-utils: Opening database
*** LOG addons.xpi: Add-on {2204c510-88f3-11db-b606-0800200c9a66} modified in app-profile
*** LOG addons.xpi: Add-on yslow@yahoo-inc.com modified in app-profile
*** LOG addons.xpi: Add-on {02450954-cdd9-410f-b1da-db804e18c671} modified in app-profile
*** LOG addons.xpi: Add-on {c45c406e-ab73-11d8-be73-000a95be3b12} …Run Code Online (Sandbox Code Playgroud) 我正在测试一个需要登录的应用程序。当我单击“保持登录”按钮时使用 SafariDriver,每个创建的新 SafariDriver 实例都会按预期自动登录;但是当我使用 FirefoxDriver 或 ChromeDriver 时,我每次都被要求提供我的凭据,就好像我以前从未使用该浏览器登录过该站点(当我手动和使用 webdriver 时)。是否需要启用某些设置才能让 FireFox 和 Chrome 保持登录状态?
selenium-chromedriver selenium-firefoxdriver selenium-webdriver
我有一个上传,压缩和下载pdf文件的测试.除下载部分外,一切正常.当我们点击下载时,我无法获得如何处理Firefox中的确认弹出/保存或打开文件对话框.我尝试修改firefox配置但仍然无法解决它.有人可以帮忙吗?
FirefoxProfile profile = new FirefoxProfile();
profile.setPreference("browser.download.folderList", 2);
profile.setPreference("browser.download.manager.showWhenStarting", false);
profile.setPreference("browser.download.dir", "C:\\Users\\Sahil\\Downloads\\");
profile.setPreference("browser.helperApps.neverAsk.openFile","application/pdf");
profile.setPreference("browser.helperApps.neverAsk.saveToDisk","application/pdf");
profile.setPreference("browser.helperApps.alwaysAsk.force", false);
profile.setPreference("browser.download.manager.alertOnEXEOpen", false);
profile.setPreference("browser.download.manager.focusWhenStarting", false);
profile.setPreference("browser.download.manager.useWindow", false);
profile.setPreference("browser.download.manager.showAlertOnComplete", false);
profile.setPreference("browser.download.manager.closeWhenDone", false);
profile.setPreference("browser.download.manager.useWindow", false);
profile.setPreference("browser.download.manager.showWhenStarting", false);
profile.setPreference("services.sync.prefs.sync.browser.download.manager.showWhenStarting", false);
, 0 profile.setPreference("pdfjs.disabled", true);
WebDriver driver=new FirefoxDriver(profile);
driver.get("http://www.ilovepdf.com/compress_pdf");
driver.findElement(By.id("pickfiles")).click();
Runtime.getRuntime().exec("C:\\Users\\Sahil\\Documents\\Au\\Second.exe");
WebDriverWait wait=new WebDriverWait(driver, 100);
WebElement element1=wait.until(ExpectedConditions.elementToBeClickable(By.id("uploadfiles")));
element1.click();
WebElement element=wait.until(ExpectedConditions.presenceOfElementLocated(By.cssSelector("a#download")));
element.click();
Run Code Online (Sandbox Code Playgroud) 这是我使用Firebug检查元素时的样子
当我在xpath中尝试相同的语法时,它选择结果页面2.我在selenium IDE中尝试了相同的方法并单击了find,它在执行代码时选择结果页面2.我正在接受No Such Element异常
Xpath语法: //a[contains(@href,'/jobs?q=qa+engineer&l=Renton%2C+WA&start=10')]/span[contains(@class,'pn')][text()='2']
public void jobSearch(){
WebDriver driver= new FirefoxDriver();
driver.get("https://www.indeed.com");
driver.findElement(By.id("what")).sendKeys("QA Engineer");
driver.findElement(By.id("where")).clear();
driver.findElement(By.id("where")).sendKeys("Seattle,WA");
driver.findElement(By.id("fj")).click();
driver.manage().timeouts().implicitlyWait(25, TimeUnit.SECONDS);
driver.findElement(By.xpath("//a[contains(@href,'/jobs?q=qa+engineer&l=Renton%2C+WA&start=10')]/span[contains(@class,'pn')][text()='2']")).click();
Run Code Online (Sandbox Code Playgroud)
感谢您的宝贵时间和宝贵的建议.
升级后,Selenium WebDriver 3.1.0我收到了警告
driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(30));
Run Code Online (Sandbox Code Playgroud)
警告11'OpenQA.Selenium.ITimeouts.SetScriptTimeout(System.TimeSpan)'已废弃:'此方法将在以后的版本中删除.请改为设置AsynchronousJavaScript属性.
所以我改成了
driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(30);
Run Code Online (Sandbox Code Playgroud)
它运行良好ChromeDriver,但是当我尝试FireFoxDriver在此行上测试失败时,抛出异常
结果消息:System.InvalidOperationException:缺少'type'参数(IndexOutOfBounds)结果StackTrace:在OpenQA.Selenium的OpenQA.Selenium.Remote.RemoteWebDriver.UnpackAndThrowOnError(响应errorResponse).Remote.RemoteWebDriver.Execute(String driverCommandToExecute,Dictionary`2参数)OpenQA.Selenium.Remium.Selenium.Remote.Remote给出的OpenQA.Selenium.Remote.RemoteWebDriver.InternalExecute(String driverCommandToExecute,Dictionary'2参数).在OpenQA.Selenium.Remote.RemoteTimeouts.ExecuteSetTimeout(String timeoutType,TimeSpan timeToWait).(TimeSpan值) )在OpenQA.Selenium.Support.Events.EventFiringWebDriver.EventFiringTimeouts.set_ImplicitWait(TimeSpan value)
怎么解决这个?

当我使用selenium启动firefox时,它遇到了这样的问题.我只是写了一个简单的演示来测试,失败了.
我想在多台机器上配置多个 Firefox 浏览器来执行并行测试。
提前致谢。
Firefox 版本: 60.0.1
Selenium Firefox 驱动程序: 3.7.1
Geckdriver 版本: v0.19.0
System.setProperty("webdriver.gecko.driver","C:\\Fm2\\Try_Browsers\\Browsers\\drivers\\geckodriver_19.exe");
WebDriver driver = new FirefoxDriver();
driver.get("https://www.google.com/");
driver.close();
Run Code Online (Sandbox Code Playgroud)
我在不同的bat文件中设置了网格和节点:
HUb设置:
java -jar selenium-server-standalone-3.1.0.jar -port 4444 -role hub
节点设置:
java -Dwebdriver.gecko.driver=./geckodriver_19。 exe -jar selenium-server-standalone-3.1.0.jar -port 5557 -role node -hub http://localhost:4444/grid/register -browser“browserName=firefox,maxInstances=10,platform=ANY,seleniumProtocol=网络驱动程序”
System.setProperty("webdriver.gecko.driver","C:\\Fm2\\Try_Browsers\\Browsers\\drivers\\geckodriver.exe");
DesiredCapabilities cap = DesiredCapabilities.firefox();
cap.setBrowserName("firefox");
cap.setPlatform(Platform.ANY);
WebDriver driver = new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"), cap);
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
driver.get("https://www.google.com/");
driver.close();
Run Code Online (Sandbox Code Playgroud)
Exception in thread "main" org.openqa.selenium.SessionNotCreatedException: Unable to create …Run Code Online (Sandbox Code Playgroud) selenium selenium-grid selenium-firefoxdriver selenium-webdriver remotewebdriver
我有这个问题,这让我发疯,我有这个课
package Test;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
public class Firefox {
String keyFirefox = "webdriver.gecko.driver";
String valueFirefox = "...path/geckodriver.exe";
public Firefox(){
System.setProperty(keyFirefox, valueFirefox);
}
WebDriver Firefox = new FirefoxDriver();
}
Run Code Online (Sandbox Code Playgroud)
在我的主类中,我实例化前一个类,可以毫无问题地访问属性
package Test;
public class EntryPoint {
public static void main(String[] args) {
Firefox firefoxBrowser = new Firefox();
firefoxBrowser.Firefox.get("https://www.amazon.com.mx/");
}
}
Run Code Online (Sandbox Code Playgroud)
但是当它编译时它会给我一个错误:
线程"main"中的异常java.lang.IllegalStateException:驱动程序可执行文件的路径必须由webdriver.gecko.driver系统属性设置; 有关更多信息,请参阅https://github.com/mozilla/geckodriver.最新版本可以从https://github.com/mozilla/geckodriver/releases下载
谢谢!
因此,我现在有一个看起来像这样的工作代码;
if browser.find_elements_by_xpath("//div[contains(@class, 'dealspg_item_cell')]"):
snipes = browser.find_elements_by_xpath("//div[contains(@class, 'dealspg_item_cell')]")
else:
print "Cant find snipes.. Retrying..."
browser.get("https://www.rolimons.com/deals")
time.sleep(2)
print "Reloaded browser... Retrying..."
if browser.find_elements_by_xpath("//div[contains(@class, 'dealspg_item_cell')]"):
snipes = browser.find_elements_by_xpath("//div[contains(@class, 'dealspg_item_cell')]")
else:
print "Shutting down engine..."
browser.quit()
checking = False
print "Restarting script..."
break
Run Code Online (Sandbox Code Playgroud)
这一切都很好。它有60个元素。现在我只需要第一个10。如何使它只有find_elements_by_xpath10个限制?
有什么办法吗?
谢谢!
====编辑====
此代码目前需要4秒钟。我希望通过将最大值设置为10来减少此时间。
python selenium python-3.x selenium-firefoxdriver selenium-webdriver