2012-03-21 46 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); 

..它現在就像一個魅力... :)