我是个硒新手。
作为一名JavaScript程序员,我想在Selenium-2测试(JUnit)中处理JavaScript事件。我加入了一个所有现有测试都有"waitForSomethingToBeRendered“方法的团队。我的Selenium测试是否可以处理/侦听DOM (或自定义)事件?
此外,我还阅读了一些开发人员使用FireBug编写/调试Selenium-2测试的文章。这是怎么回事?我没有在Selenium启动的浏览器中看到FireBug。同样,为什么下面的内容看起来没有效果?我是在尝试Selenium/JUnit不支持的东西吗?
selenium().getEval("alert('hello');");
selenium().getEval("debugger;");发布于 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()。
发布于 2011-06-30 05:18:53
首先,如果您刚开始使用Selenium,我建议您使用用于WebDriver的2.0API。要在2.0中计算JavaScript,只需将WebDriver对象转换为JavascriptExecutor对象并使用它提供的方法即可。“waitForSomethingToBeRendered”需要在几个步骤中完成。首先,您必须确保DOM对象在页面上可用。为此,您可以这样做:
WebElement e = null;
try {
e = driver.findElement( By.id("asdf") );
} catch {
...
}或者:
driver.findElements( By.id("asdf") ).size() != 0确定DOM对象是否可用后,您可以执行以下操作:
e.isDisplayed()它将返回当前是否显示该元素。
关于你所看到的FireBug和Selenium,我猜你混淆了Selenium IDE和Selenium RC/WebDriver,Selenium IDE是Firefox插件,而Selenium RC/WebDriver不是插件。
发布于 2011-06-30 05:19:25
在正常浏览站点的同时使用Firebug浏览DOM,以确定要在Selenium脚本中选择的正确元素和类in。如果您正在使用extjs,那么在确定要选择哪些元素方面会有一些额外的乐趣,因为extjs会随机化元素in。最好的方法是添加一个额外的css类来查找正确的元素,然后按该类进行选择。
https://stackoverflow.com/questions/6526281
复制相似问题