2017-08-08 66 views
1

我想單擊「關注」按鈕,直到它在網頁中找到。單擊循環,直到在java中找到多個按鈕的(按鈕)元素

我有下面的代碼:

@Test 
public void testCar() throws Exception 
{ 
    driver.get("https://-----/login/"); 
    driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); 
    driver.findElement(By.id("username")).clear(); 
    driver.findElement(By.id("username")).sendKeys("user"); 
    driver.findElement(By.id("password")).clear(); 
    driver.findElement(By.id("password")).sendKeys("password"); 
    driver.findElement(By.xpath("//button[@type='submit']")).click(); 
    driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); 
    driver.findElement(By.xpath("//span[text()='Followed']")).click(); 
} 

我怎樣才能做到這一點?如果未找到該元素,則單擊下一頁&再次找到該按鈕。

這裏是下一個按鈕HTML:

<span>Next Page</span> 

請幫助。

回答

0

只要把環路周圍的嘗試捕捉

try { 
    while (true) 
    { 
    driver.findElement(By.xpath("//span[text()='Followed']")).click(); 
    } 
} catch (ElementNotFoundException ex) { 
    driver.findElement(By.xpath("//span[text()='Next Page']")).click() 
} 

如果找到該元素,它被點擊,如果沒有,那麼沒有找到一個元素會拋出異常,到時候你可以點擊下頁按鈕

+0

謝謝,在下一頁如何再次搜索'Followed'按鈕。 – sadi

+0

把我寫在另一個代碼。當NextPage點擊失敗時捕獲異常 –

0

檢查車況天氣其次按鈕用或不適合,你必須使用目錄得到遵循webelements像:

Boolean buttonNotFound = true; 

while(buttonNotFound) 
{ 
    List<WebElement> follow = driver.findElements(By.xpath("//span[text()='Followed']"));  
    if(follow.size()!=0) 
    { 
      follow.get(0).click(); 
      buttonNotFound=false; 
    } 
    else 
    { 
     driver.findElement(By.xpath("//span[text()='Next Page']")).click(); 
    } 
} 

NOTE:不要一次又一次地寫ImplicitWait,如果您在get()正下方的某個地方提到過,那麼它適用於整個腳本。如果某些元素需要更多時間進行交互,則使用ExplicitWait