首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我可以在运行Selenium测试时处理事件吗?

我可以在运行Selenium测试时处理事件吗?
EN

Stack Overflow用户
提问于 2011-06-30 03:41:13
回答 3查看 2.7K关注 0票数 0

我是个硒新手。

作为一名JavaScript程序员,我想在Selenium-2测试(JUnit)中处理JavaScript事件。我加入了一个所有现有测试都有"waitForSomethingToBeRendered“方法的团队。我的Selenium测试是否可以处理/侦听DOM (或自定义)事件?

此外,我还阅读了一些开发人员使用FireBug编写/调试Selenium-2测试的文章。这是怎么回事?我没有在Selenium启动的浏览器中看到FireBug。同样,为什么下面的内容看起来没有效果?我是在尝试Selenium/JUnit不支持的东西吗?

代码语言:javascript
复制
selenium().getEval("alert('hello');");
selenium().getEval("debugger;");
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-06-30 05:29:14

您看不到firebug扩展,因为selenium打开了一个剥离的firefox。我猜原因是它要快得多。添加插件是可能的(在selenium-2中也很容易)。

警报不起作用是因为selenium-1 (我不知道selenium-2是如何处理它们的)吞下了警报。有一个处理警报的api。

另外,在selenium-1中,JS在不同的窗口中运行。因此,document.getElementById()的等价物是sel.getEval("selenium.browserbot.getCurrentWindow().document.getElementById()")

最后,我不知道事件,但您可以等待条件:sel.wait_for_condition()

票数 1
EN

Stack Overflow用户

发布于 2011-06-30 05:18:53

首先,如果您刚开始使用Selenium,我建议您使用用于WebDriver的2.0API。要在2.0中计算JavaScript,只需将WebDriver对象转换为JavascriptExecutor对象并使用它提供的方法即可。“waitForSomethingToBeRendered”需要在几个步骤中完成。首先,您必须确保DOM对象在页面上可用。为此,您可以这样做:

代码语言:javascript
复制
WebElement e = null;

try {
  e = driver.findElement( By.id("asdf") );
} catch {
  ...
}

或者:

代码语言:javascript
复制
driver.findElements( By.id("asdf") ).size() != 0

确定DOM对象是否可用后,您可以执行以下操作:

代码语言:javascript
复制
e.isDisplayed()

它将返回当前是否显示该元素。

关于你所看到的FireBug和Selenium,我猜你混淆了Selenium IDE和Selenium RC/WebDriver,Selenium IDE是Firefox插件,而Selenium RC/WebDriver不是插件。

票数 1
EN

Stack Overflow用户

发布于 2011-06-30 05:19:25

在正常浏览站点的同时使用Firebug浏览DOM,以确定要在Selenium脚本中选择的正确元素和类in。如果您正在使用extjs,那么在确定要选择哪些元素方面会有一些额外的乐趣,因为extjs会随机化元素in。最好的方法是添加一个额外的css类来查找正确的元素,然后按该类进行选择。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6526281

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档