2015-06-22 63 views
0

在webelement「err」爲null時執行代碼,然後webdriver花費太多時間來執行if塊但「err」不爲null webdriver將要else塊和驅動程序中獲取關閉,則確定Webdriver花費太多時間在if語句中使用java執行腳本

driver.findElement(By.id("UHID")).sendKeys("1234440"); 
driver.findElement(By.id("btnSubmit")).click(); 
Thread.sleep(100); 
WebElement err=null; 
try 
{ 
    err=driver.findElement(By.xpath("//*[@id='Error']/div/p")); 
} 
catch(NoSuchElementException e) 
{ 
    System.out.println("No Such Element Exception."); 
} 
if(!(err != null && err.isDisplayed())) 
{ 
    Thread.sleep(100); 
    Select policytype=new Select(driver.findElement(By.id("PolicyType"))); 
    policytype.selectByVisibleText("Corporate");                 
    //Select Payer 
    Thread.sleep(200); 
    driver.findElement(By.id("Payer")).sendKeys(Keys.TAB); 
    //Payer 
    Select Payer=new Select(driver.findElement(By.id("Payer"))); 
    Payer.selectByIndex(1); 
    driver.findElement(By.id("Submit")).click(); 
} 
else 
{ 
    System.out.println("UHID Not Exist"); 
    driver.close(); 
} 

請提前告知 感謝

+0

你爲驅動程序設置了什麼隱式等待時間? –

+1

我沒有給出任何隱含的等待時間在我的腳本 –

+0

根據你的代碼你的問題沒有措辭正確。當err爲空時,else塊將被執行,而不是if塊。當err不爲空時,if塊將被執行,而不是else塊。 – aholt

回答

1

試試這個:

try 
{ 
    driver.manage().timeouts().implicitlyWait(1000, TimeUnit.MILLISECONDS); 
    err=driver.findElement(By.xpath("//*[@id='Error']/div/p")); 
} 
catch(NoSuchElementException e) 
{ 
    //Log your error 
} 
finally 
{ 
    driver.manage().timeouts().implicitlyWait(15000, TimeUnit.MILLISECONDS); 
} 

這會告訴驅動程序在拋出異常之前僅花費1秒搜索「err」元素。即使發生異常,它也會重置隱式等待。

+0

謝謝阿霍特工作正常 –

+0

請將此標記爲答案。 – aholt

相關問題