问题标签 [selenium-webdriver]

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.

0 投票
2 回答
3240 浏览

java - Selenium 2 窗口切换:Java

嗨,基本上我正在尝试切换到一个弹出窗口,然后在该弹出窗口上按下一个按钮,但是从某个地方我得到了错误。

这是网页的示例

http://i42.photobucket.com/albums/e326/limpep/example.png

这是我的代码

我得到的错误

亲切的问候

0 投票
1 回答
10153 浏览

java - Selenium 页面对象重用

我真的很喜欢 selenium 2 按照惯例如何推动您使用 PageObjects 作为 POJO,然后简单地使用 PageFactory 来实例化此类中的字段。

我发现限制是我们在许多不同的页面上重用了很多元素。最大的问题是,这些重用的组件出现在不同页面时,它们的 id/name 并不相同;但是我们将为它们中的每一个运行的测试是相同的。

例如,我们在许多地方收集日期。因此,此示例页面对象可能是(已删除月、日字段):

然后我可以用下面的代码简单地测试一下:

我真正想做的是有一个设置,通过 Spring 我可以将 id/name/xpath 等注入应用程序。

有没有办法可以做到这一点,而不会失去使用 PageFactory 的能力?

编辑 1 - 添加理想的基础级别类,使用自定义定位器和工厂。

编辑 2——就像一个注释一样,只要您运行 Selenium 2.0.a5 或更高版本,您现在就可以为驱动程序提供一个隐式超时值。

因此,您可以将代码替换为:

0 投票
4 回答
4221 浏览

linux - WebDriver Selenium API:Linux 上的 FirefoxDriver?

有没有人成功地在 Linux 发行版上使用 FirefoxDriver 运行测试?如果是这样,您使用的是哪个发行版?你在用 xvfb 吗?

现在,我想简单地使用windows 2003 server,但它有点贵,而且我更熟悉linux环境。

0 投票
2 回答
14967 浏览

c# - Selenium 2/Webdriver - 如何双击表格行(打开一个新窗口)

我正在将 C# 与 Selenium 2.0 / Webdriver 一起使用,并且我正在尝试模拟双击打开新浏览器窗口的表格行。

我有两个问题:

  1. 在找到具有唯一类名的表行后(即使用findelement(By.classname("...")))单击方法(或选择/提交)不执行任何操作并抱怨无法对相关元素执行此类操作。

  2. 如何在 Selenium 2.0/Webdriver 中执行双击?

0 投票
4 回答
22392 浏览

image - Selenium - 检查图像是否显示在页面上

我正在为网络相册应用程序创建一套 Selenium 测试。我想测试是否实际显示图像(它包含有效的图像数据)。这样的事情可能吗?

0 投票
1 回答
1581 浏览

selenium - 将 Jquery 库添加到 Selenium

有人可以指点我如何将 Jquery 库添加到 Selenium 吗?我确实在网上搜索过,以下是我到目前为止所遵循的步骤。我不确定下一步该做什么。在这些更改之后,如何使用更改构建 selenium jar?

  1. 解压后的 selenium 2.04.jar
  2. 在 user-extensions.js 中复制 jQuery.js 的内容
  3. 在 selenium-remoterunner.js 文件的 runSeleniumTest() 函数中将 JQuery 定位器定位到 Selenium 核心,如下所示,

    函数 runSeleniumTest() { ... selenium.doAddLocationStrategy("jquery", " var loc = locator; var attr = null; var isattr = false; var inx = locator.lastIndexOf('@');

    /li>
0 投票
1 回答
163 浏览

java - 我可以使用什么模式?

我正在使用 Selenium 2 实现一个项目,该项目目前不能很好地支持确认对话框。

有一个解决此限制的方法,您只需覆盖 window.confirm 以返回您需要为特定测试用例返回的值。

可以设置并执行以下字符串:

作为模板方法,这似乎非常简单,但是我在同一个页面对象上有多个测试用例,在与页面交互后我需要确认/拒绝。因此,使用单一方法一次完成所有这些测试是行不通的。

将命令注入到测试方法中可能是有意义的,但我在这里的最终目标是允许我们技术较少的人员通过将一些字符串写入 XML 来创建测试,然后使用 Spring 表达式语言执行它;这消除了编写测试的一些“容易”。

主要需要注意的是,由于需求,该测试套件实际上是一个应用程序,而不是一组单独运行的测试用例。如果它们是小测试用例会容易得多,因为我可以扩展一个抽象测试用例并使用相同的设置和拆卸例程。

我最终要寻找的是沿着这个模板方法的东西,但我需要能够在单个页面对象上支持多个测试用例。

0 投票
3 回答
926 浏览

java - Java 反射/泛型

给定以下三个类,我如何使用反射来调用父类和子类的初始化函数:

我不太确定如何在 Test 类中参数化初始化函数,因为 clazz 参数是原始类型。

如果我传递给 initialize 的是 Element 的子类,我本质上需要的是调用类层次结构的初始化。

类似于以下内容:

编辑1:

我不能对上面的伪函数进行不同的参数化以保留对象的类型,然后调用我需要的函数吗?

我想要做的是避免必须为我的每个类重写相同的方法,并允许我的 Selenium 2 页面对象进行一些继承。我需要做的是能够自省我自己的超类并在对这些字段运行测试之前初始化我的每个 WebElement 字段。

这些是用 spring 注入的,为了进一步复杂化,我允许使用 Spring Expression 语言编写测试。我懒加载我的 bean,并使用 InitializingBean 接口尝试在使用之前初始化我的 WebElements 以避免 NPE。

我必须用自定义对象包装 WebElement,以便我可以使用 spring 注入位置策略(我们重用了很多部分,但它们具有不同的 id/类名,具体取决于它们在应用程序中的使用位置;这是之前完成的对我来说,尽管我主张一致性,但此时不会改变)。例如,我们有一个具有不同粒度的日期小部件,有时我们只需要一个月,有时是月份和年份等......如果我可以使用抽象类并将这些共性分解为它们的最小公分母,那就太好了并从那里延伸。为此,我需要能够在我的基类中执行以下操作:

0 投票
11 回答
26444 浏览

php - Selenium 2 (WebDriver) 和 Phpunit?

有人知道如何将 Selenium 2 与 Phpunit 一起使用吗?PHP中是否有任何Selenium 2示例?

0 投票
2 回答
2656 浏览

session - Selenium + PHPUnit:sessionId 不应为空;本次会议开始了吗?

我正在使用 PHP 运行 Selenium RC。我运行了一个简单的登录测试,成功完成,但在关闭浏览器之前,我收到以下错误:

23:50:09.969 信息-命令请求:会话 d7a1effeabc24b0b9b46ad6fdb3eebec 上的 testComplete [,] 23:50:09.969 信息-正在杀死谷歌浏览器... 23:50:10.286 信息-得到结果:会话 d7a1effeabc24b0b9b46ad06fdb3eebec 23:OK。 - 命令请求:会话 null 上的 getLocation [,] 23:50:10.351 错误 - 会话 null java.lang.NullPointerException 上运行“getLocation”命令的异常:sessionId 不应为 null;本次会议开始了吗?在 org.openqa.selenium.server.FrameGroupCommandQueueSet.getQueueSet(FrameGroupCommandQueueSet.java:216) 在 org.openqa.selenium.server.commands.SeleniumCoreCommand.execute(SeleniumCoreCommand.java:34) 在 org.openqa.selenium.server.SeleniumDriverResourceHandler .doCommand(SeleniumDriverResourceHandler.java:562) 在 org.openqa.selenium。java:357) at org.openqa.jetty.util.ThreadPool$PoolThread.run(ThreadPool.java:534) 23:50:10.364 信息-得到结果:错误服务器异常:sessionId 不应为空;本次会议开始了吗?在会话空

我找不到解决方案...请帮助。