2012-03-21 47 views
0

我想实现以下目标:selenium webdriver Java:提高“if else”性能?

  • 如果一个特定的元素存在,单击它并回到主页。
  • 否则,只是回到主页所以测试继续进行无故障

我想出了下面的代码,这却是真的。我不确定有没有更好的方法来实现这一点?任何意见将不胜感激!

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(); 
    } 

回答

0

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

查看CSS选择器和您正在扫描的DOM元素的示例会很有帮助。

例如,如果你的页面充满了1000个DIV元素,像这样一类:

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

,并使用一个CSS选择器这样的:

".smallItem" 

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

+1

感谢反馈! – user1282634 2012-03-21 22:59:17

4

我想出了什么会降低性能。正是这一行:

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

由于该声明,它会等待元素被验证30秒。

将其更改为后:

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

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