2017-04-10 93 views
0

我想點擊<>橫幅上的按鈕,它在amazon.in中持續幾秒鐘後仍然旋轉,但無法這樣做。Selenium Webdriver - 點擊橫幅

我寫了下面的代碼,但還是沒有成功

driver.get("amazon.in"); 
driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS); 
driver.findElement(By.xpath("//span[contains(text(),'Previous page')]")).click(); 

它不能在<按鈕點擊其上顯示在頁面頂部的標題。

+0

你檢查元素出現在間歇頁? – ASANT

回答

-1

使用以下代碼點擊下一個>和之前的<滑塊的箭頭。

driver.get("http://www.amazon.in/"); 
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); 
driver.manage().window().maximize(); 
// Forward navigation 
for(int i =0;i<3;i++) 
{ 
     driver.findElement(By.xpath("//a[@class='a-carousel-goto-nextpage']")).click(); 
     Thread.sleep(1000); 
    } 

// back navigation 
for(int j=0;j<3;j++) 
{ 
    driver.findElement(By.xpath("//a[@class='a-carousel-goto-prevpage']")).click(); 
    Thread.sleep(1000); 
} 
+1

使用'Thread.sleep()'是一種不好的做法,更不用說你將它與隱式等待混合在一起。 – JeffC

+0

當您編寫自動化時,您不需要看到效果。如果您需要檢測效果,您可以使用代碼對其進行測試以確保點擊成功等。 – JeffC

+0

您已經發布了使用不良做法在SO上生活的代碼。其他人可能會看到這個代碼,並認爲它沒有時可以複製/使用它。 – JeffC

0

當我編寫可能重用的代碼時,我將它放入函數中。這裏有一個功能可以點擊橫幅上的next和prev箭頭。

public static void clickNextBanner() 
{ 
    driver.findElement(By.cssSelector("a.a-carousel-goto-nextpage")).click(); 
} 

public static void clickPrevBanner() 
{ 
    driver.findElement(By.cssSelector("a.a-carousel-goto-prevpage")).click(); 
} 
+0

謝謝它適用於我! – Rats

+0

如果您發現此(或任何)答案有幫助,請立即加入。如果這回答了您的問題,請將其標記爲已接受的答案。謝謝! – JeffC

0

嘗試使用顯式等待

WebElement previous =driver.findElement(By.xpath("//span[contains(text(),'Previous page')]")); 
    WebDriverWait wait = new WebDriverWait(driver,20); 
    wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//span[contains(text(),'Previous page')]"))); 
    previous.click();