2013-10-23 37 views
0

我試圖點擊網頁中具有相同xpath的所有按鈕。無法點擊鏈接。 以下是我的腳本:無法點擊同一xpath上的多個按鈕

WebElement ParentElement= Driver.findElement(By.cssSelector(OR.getProperty(Object))); 
       List<WebElement> schedule= ParentElement.findElements(By.tagName("a")); 

       for(int i=1;i<schedule.size();i++){ 
        schedule.get(i).click(); 
        Thread.sleep(5000L); 
       } 
+0

難道點擊相同的按鈕?你能讓我們知道你收到的錯誤信息嗎? – Hemanth

+0

它是網頁上的相同按鈕。我必須點擊3次按鈕。沒有得到任何錯誤。但無法點擊按鈕。 – pratik

+0

如果只有一個按鈕,那麼列表大小將是1,for循環將只執行一次。你可以分享網站的網址和你的要求,以便我們可以幫助你的情況? – Hemanth

回答

0

Book an Appointment的cssSelector按鈕

 .schedule>a[href*!='Mammogram']>img 

cssSelector for Book a Mammogram按鈕

 .schedule>a[href*='Mammogram']>img 

更新

driver.get("http://www.nyrp.com/"); 
    WebElement ParentElement= driver.findElement(By.className("schedule")); 

     List<WebElement> schedule= ParentElement.findElements 
          (By.xpath("//img[@alt='Schedule an appointment']")); 
        System.out.println(schedule.size()); 

        for(int i=0;i<schedule.size();i++) 
          { 
           schedule.get(i).click(); 
           Thread.sleep(5000); 
         } 
+0

是的,它適用於「.schedule> a [href * ='乳房X線照片']> img」 但我想點擊同一網頁上的所有鏈接 – pratik

+0

檢查我更新的答案! – Hemanth

+0

謝謝哼! 它完美的工作。 – pratik

0

你離開頁面或者改變通過JavaScript它的元素被點擊的鏈接時?如果是這樣,那麼第一次點擊成功並且所有後續點擊失敗,因爲存儲在schedule中的引用無效。

你必須在每次「點擊」之前做一個findElement以獲得新的參考。 (這也適用於這樣的WebElements所有其他行動通常你在這些情況下,StaleElementReferenceException)

編輯:作爲除HemChes回答: 你已經選擇與cssSelector按鈕爲ParentElement,但隨後在第一個結果中搜索a-tags。試試下面的代碼:

List<WebElement> schedule= getDriver().findElements(By.cssSelector(".schedule>a>img")); 

for(int i=0;i<schedule.size();i++){ 
    schedule.get(i).click(); 
    Thread.sleep(5000L); 
} 

編輯2:固定的C & p錯誤和循環計數器

(假設OR.getProperty(Object)返回CSS,你在你的評論中提及選擇)

+0

不,第一次也沒有點擊按鈕。 – pratik

+0

不,它仍然無法正常工作。 我也試圖在循環中獲取對象,仍面臨同樣的問題。 'WebElement ParentElement = Driver.findElement(By.cssSelector(OR.getProperty(Object))); 列表 schedule = ParentElement.findElements(By.cssSelector(OR.getProperty(Object)));對於(int i = 1; i pratik

+0

對不起,我沒有在發佈前執行代碼 - 修復了複製和粘貼錯誤。上面的代碼運行並點擊所有三個按鈕。 – ChristophT