java - 无法使用 selenium webdriver 版本 3.0.0.beta3 单击链接

标签 java selenium selenium-webdriver webdriver

我已经编写了下面的 Junit 代码来点击下面 quikr 网站上的 Sign In 链接 <强> http://www.quikr.com/ .

代码运行良好,没有任何错误,但 webdriver 似乎没有点击网站上的 Sign In 链接。请提出建议。

我正在使用:

操作系统:Win10

Slenium WebDriver:版本 3.0.0.beta3

火狐浏览器版本: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();
    }   
}

最佳答案

这真的很奇怪。这个页面有些东西在页面完全加载之前不允许点击......它会进行初始加载然后触发第二次广告加载。如果没有漫长的等待,我找不到点击该链接的方法。可能有另一种方法可以正确地做到这一点,但我想不出怎么做。下面的代码对我有用(但很丑)。

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

使用 Thread.sleep() 不是一个好习惯,在 99% 的情况下都应该避免。 WebDriverWait 是等待元素等的首选方式。

关于java - 无法使用 selenium webdriver 版本 3.0.0.beta3 单击链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39691759/

相关文章:

java - 有没有办法查询带有通配符的ehcache映射键?

java - 如何在不关闭连接的情况下更改波特率?

python - css first 和 last 在 selenium rc 中不起作用

python - 使用webdriver、python、beautifulsoup检索动态网站

testing - Selenium 网络驱动程序。等待元素后 click() 卡住测试

java - 如何显示处理信息。在程序中?

java - mchange-commons-java-0.2.11.jar 的 Spring Boot Web 应用程序 FileNotFoundException

java - 使用 Lambda 表达式在 Selenium 中使用 Java 切换窗口

python-3.x - 如何在Python Selenium Appium中的textarea中 "send_keys"多行?

Selenium,无法通过在子节点后面包含文本来找到元素