问题标签 [selenium-firefoxdriver]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - pageLoadTimeout 不适用于具有 PageObjects 的 firefox
我使用 Selenium WebDriver 来测试一个网站。我有 PageObjects 来表示LoginPage
、HomePage
和ManagementPage
。我的测试首先登录,它返回 a HomePage
,然后单击一个返回 a 的按钮ManagementPage
。然后它会检查一堆东西,单击返回的链接HomePage
,然后单击注销链接。
这一切都适用于 Chrome,pageLoadTimeout
根本不使用 a。但是,在 Firefox 中,我NoSuchElementException
在尝试单击注销链接时会打开。我假设这是因为尝试单击注销按钮时页面尚未完全加载。所以我driver.manage().timeouts().pageLoadTimeout(5000, TimeUnit.MILLISECONDS)
在我的测试开始时放了一个,就在我创建驱动程序之后。我仍然得到同样的错误。将超时更改为5 milliseconds
证明超时有效,因为页面未加载并TimeOutException
抛出 a。
如果我将 移动driver.manage().timeouts().pageLoadTimeout(5000, TimeUnit.MILLISECONDS)
到 的构造函数,HomePage
那么它一切正常。所以我可以通过为每个 PageObject 设置超时来解决我的问题。
我希望只能为每个驱动程序设置一次,这就是我从这个问题中收集到的意思。但是这个问题说 pageLoadTimeout 不适用于单击链接,这让我感到困惑,因为我确实为我工作,但前提是我为每个 PageObject 设置了它。
我还有其他事情要做吗?或者,当驱动程序传递给 PageObject 时,超时是否会重置?我看不到这将如何发生,因为我在构造函数中所做的只是:
java - Selenium executeScript 不返回列表
Selenium executeScript 没有返回列表。以下代码尝试在电子邮件的主题字段中写入内容,将其保存为草稿,然后通过搜索字段搜索草稿。
以下 javascript 正在获取具有类“Fmd”的所有元素,但 JavaScriptExecutor 未返回 WebElements 列表。
java - Selenium (Java) - 使用配置文件任意实例化 FirefoxDriver
我正在使用 Selenium FirefoxDriver,无论我做什么,我都希望它从我的默认用户配置文件(插件等)开始。我得到了那个部分的工作。我还编写了一个简单的 GUI 来帮助我控制我的程序。这个 GUI 有一个启动驱动程序的按钮和另一个调用quit()的按钮。
问题:
- 我单击开始-> 工作正常。FirefoxDriver 加载了所有插件、书签、...
- 我单击关闭-> 工作正常。浏览器干净地关闭(据我所知)。
- 我再次单击开始-> 浏览器启动,但配置文件为空白。没有插件,什么都没有
这就是我实例化驱动程序的方式。我不知道是什么导致了这个问题。请帮忙!
java - Webdriver executeScript 偶尔没有检测到动态生成的元素
我花了很长时间才弄清楚,但我仍然在努力解决这个问题。我正在尝试使用 selenium webdriver 使用 javascript 注入访问网页上动态生成的元素。例如:
现在,当我在 Firefox 控制台中执行此脚本时,它可以正常工作。但是当在 webdriver 5-6 中运行 10 次时,这条线会抛出异常(即使认为元素是物理存在的)。
为什么会这样?什么是解决方案?如果任何提示/答案有用,我一定会投票。
编辑:
我已经放入了 Thread.sleep(500) ,甚至在我的代码中每次出现 executeScript() 之前等待 1000 秒。仍然无法正常工作。
这是(部分)堆栈跟踪:
java - 通过xpath Selenium java选择具有动态生成的ID的WebElements
我需要在下拉窗口中选择一个元素。每次我在我正在测试的网站中打开下拉窗口时,网站都会为该下拉窗口随机生成一个 id。下拉窗口的先前实例可见(使用 Firebug)但不可选择。有一个静态路径,但它仅在我使用 ChromeDriver 测试时有效,而不是在我使用 FirefoxDriver 时。按类名定位动态生成的元素(下拉窗口的每个实例都具有相同的类)在我第一次尝试时有效,但之后每次使用 ChromeDriver 和 FirefoxDriver 时都会出错。我认为它可能正在尝试定位第一个实例,而不是可选择的实例。
这是我的动态代码:
这是我的静态代码:
这是动态 HTML:
这是静态 HTML:
selenium-webdriver - 使用 WebDriver 和 Visual Studio Online 进行 Selenium 测试
作为我产品的连续集成机制的一部分,我想运行一些 Selenium 测试。我们正在使用 Visual Studio Online。
我尝试使用 IE WebDriver,但它无法连接到我的资源。我已经尝试部署 Firefox 的便携式版本并且测试似乎被卡住了 - 我猜有一个防火墙提示正在发生?
我已经尝试过 PhantomJs 网络驱动程序,但这似乎根本无法正确呈现测试页面(除非我做错了什么)......
所以...甚至可以从 Visual Studio Online 构建服务器运行基于 Selenium 的浏览器测试吗?
selenium-firefoxdriver - Selenium IDE 2.6 错误记录
我在 Selenium IDE 中运行测试用例并收到错误:[error] Element id=ui-id-31 not found。当我单击要输入值的空框时,会出现此错误。我尝试了不同的方法,例如“verifyTextPresent”和“waitForElementPresent”,但没有奏效。
有谁知道如何管理这个错误?
java - 在 java 中创建 FirefoxDriver 时出现 java.lang.NoSuchMethodError
在尝试:
我收到以下错误:
这个问题在 ubuntu 上的 firefox 更新到 32.0 版本后就开始了,我尝试安装 28.0 版本但仍然没有工作。
有任何想法吗?提前致谢
像curiosu所说的将驱动程序版本更改为 2.39 后,出现一个新错误:
解决方案:我终于设法解决了这个问题,我将 selenium webDriver 版本从 2.42.2 更改为 2.39.0 并将 firefox 版本从 32.0 降级为 28.0
selenium-webdriver - Selenium 2 找不到 Firefox 配置文件
在 Grid 设置中的 selenium 2 中,我使用它来尝试加载名为“量角器”的配置文件:
这不起作用,我收到此错误:
如果我使用 -p 参数和量角器启动 Firefox,如下所示:
它确实有效。这里可能出了什么问题?
c# - Selenium FirefoxDriver:在不同实例之间共享会话/Cookie
我有以下情况:
我有一个 C# WPF 程序,我尝试同时访问不同的网站并从中收集数据。
网站 A (www.example.com) 有一个登录表单,登录后会显示许多链接,例如 www.example.com?redir=abc
我所做的:
- 启动 FirefoxDriver 1
- 登录
- 无限循环:收集所有链接并刷新页面
问题是,我有另一个 FirefoxDriver 实例 2 在我的项目的不同线程中运行。
在这个实例 2 中,我访问了我之前收集的链接并想要打开它们。
问题是,为了访问它们(它们正在重定向),我需要再次登录到网站 A。当我登录时,实例 1 上的会话结束,所以我需要再次登录等等等等,所以有效实例正在“窃取”彼此的会话。(我想进一步扩展它以拥有实例 3,4 ......这样会使问题变得更糟)。
显然我的问题是实例 1 和实例 2 没有共享同一个会话。
我发现解决问题的可能性:
- 使用相同的 FirefoxProfile :尝试,不工作,仍然不共享会话
- 使用带有 2 个窗口/选项卡的一个实例,并使用 Selenium ThreadGuard 类从两个线程访问它:似乎非常复杂,因为我需要一直在窗口之间切换
- 使用 Selenium Grid:似乎有点矫枉过正,我还不知道这是否适合我
因此我在问,有人对我应该如何设计这个有建议吗?
谢谢您的帮助。