2016-09-25 93 views
2

我已經寫了下面的代碼Junit的點擊Sign In目前quikr網站上的鏈接下方 http://www.quikr.com/無法點擊使用硒鏈接webdriver的Vesrion 3.0.0.beta3

代碼運行沒有任何錯誤,但罰款的webdriver的似乎並不被點擊網站上的Sign In鏈接。請建議。

我使用:

OS: Win10

Slenium的webdriver:版本3.0.0.beta3

Firefox瀏覽器版本: 49.0.1

import java.util.concurrent.TimeUnit; 

import org.junit.Test; 
import org.openqa.selenium.By; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.firefox.FirefoxDriver; 

public class Quikr { 
    @Test 
    public void loginTest(){ 
     System.setProperty("webdriver.gecko.driver","C:\\Eclipse\\Drivers\\geckodriver.exe"); 
     WebDriver driver = new FirefoxDriver(); 
     driver.get("http://www.quikr.com/"); 
     driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); 
     if(!driver.findElements(By.xpath(".//*[@id='responsiveHeader']/div[1]/div[1]/ul/li[4]/a/span[1]")).isEmpty()){ 
      System.out.println("Link present"); 
     }else{ 
      System.out.println("Link not present"); 
     } 
     driver.findElement(By.xpath(".//*[@id='responsiveHeader']/div[1]/div[1]/ul/li[4]/a/span[1]")).click(); 
    } 
} 

回答

1

這真的很奇怪。有一些關於此頁面的信息,在頁面完全加載之前不允許點擊......並且它執行初始加載,然後觸發第二批廣告。我無法找到一種無需等待就點擊該鏈接的方法。可能有另一種方法可以做到這一點,但我無法想象如何。下面的代碼適用於我(但很醜)。

driver.get("http://www.quikr.com/"); 
Thread.sleep(10000); 
driver.findElement(By.cssSelector("span.sign-in")).click(); 

使用Thread.sleep()是不是一個好的做法,應該在場景99%是可以避免的。 WebDriverWait是等待元素的首選方式等。

+0

我可以使用上面提供的代碼點擊'登錄'鏈接。 –