selenium webdriver Java:改进“if else”性能?

时间:2012-03-21 11:24:44

标签: java webdriver selenium-webdriver

我正在努力实现以下目标:

  • 如果存在特定元素,请单击该元素并返回主页。
  • 否则,只需返回主页,即可继续测试而不会失败

我已经提出了下面的代码,但它真的慢。我不确定有没有更好的方法来实现它?任何意见将不胜感激!!

boolean exists = driver.findElements( By.id("xxx")).size() != 0;

if (exists)
  {
     driver.findElement(By.id("xxx")).click();
     driver.findElement(By.cssSelector("xxx")).click();
  }
  else
  {
     driver.findElement(By.cssSelector("xxx")).click();
   }

2 个答案:

答案 0 :(得分:4)

我找出了降低性能的因素。这是这一行:

driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);

由于该语句,它将等待元素被验证30秒。

将其更改为:

driver.manage().timeouts().implicitlyWait(1, TimeUnit.SECONDS);

..它现在就像一个魅力......:)

答案 1 :(得分:0)

你有什么用于CSS选择器?您可以通过调整这些来提高性能。另一件会减慢速度的事情是当页面有太多DOM elements时。

查看CSS选择器以及扫描哪些DOM元素的示例会很有帮助。

例如,如果您的页面中包含1000个DIV元素,则使用如下类:

<div class="smallItem">...</div>
<div class="largeItem">...</div>
<div class="smallItem">...</div>

你使用这样的css选择器:

".smallItem"

要选择所有DIV元素,它必须扫描每个DOM元素并计算类属性。