2016-09-25 94 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

我可以使用上面提供的代码点击'登录'链接。 –