2017-01-09 31 views
-1
if (big.findElement(By.xpath(".//*[@id='p40021404_qty']")).getSize() != null){ 
     big.findElement(By.xpath(".//*[@id='navbar-main']/div/div/div[4]/div/div[2]/div/div[2]/div[2]/div[2]/button")).click(); 
    } 
    else{ 
     System.out.println("Quantity is less !!!"); 
    } 

任何人都可以給我建議,我已經走了錯誤?中,如果(我收到提示)聲明:org.openqa.selenium.NoSuchElementException:找不到元素:.//*[@id='p40021404_qty']

+0

使用查看源代碼,並嘗試看看是否有一個HTML元素(DIV而定)與ID爲「p40021404_qty」目前在屏幕上。如果沒有,那麼你需要明白爲什麼它不出現。 – user3138997

+0

您正在對可能爲空的引用調用'getSize()'。另外 - 我不知道硒 - 但它是否會拋出異常,如果沒有匹配的xpath?在這種情況下,預計會出現異常並需要處理(try/catch)。 – Fildor

回答

1

findElement不返回null,它返回WebElement或拋出NoSuchElementException。另外,getSize()永遠不會是null

您可以使用findElements並檢查是否有列表中的任何元素

List<WebElement> elements = big.findElements(By.xpath(".//*[@id='p40021404_qty']")); 
if (elements.getSize() > 0) { 
    big.findElement(By.xpath(".//*[@id='navbar-main']/div/div/div[4]/div/div[2]/div/div[2]/div[2]/div[2]/button")).click(); 
} 
else { 
    System.out.println("Quantity is less !!!"); 
} 
+0

感謝您的輸入,代碼工作\t,我得到的輸出爲「Quantity is less !!!」 \t列表 elements = big.findElements(By.xpath(「.//*[@ id ='p40021404_qty']」));如果(elements.size()> 0) \t \t big.findElement(By.xpath(「.//*[@id ='navbar-main']/div/div/div [4]/DIV/DIV [2]/DIV/DIV [2]/DIV [2]/DIV [2] /鍵「))點擊(); \t \t System.out.println(「Quantity is Validated !!!」); \t \t} \t \t否則{ \t \t的System.out.println( 「量少!!!」); \t \t} – nancy

+0

@nancy所以這是按預期工作? – Guy

+0

是的,它正在工作 – nancy

0

您的條件會拋出異常,因爲元素不存在,並且您沒有在這段代碼中處理異常。您可以在if語句中檢查它之前找到此元素,並注意異常,請按照註釋中的建議使用try/catch。

相關問題