java - Selenium HtmlUnitDriver 登录网站

标签 java selenium authentication nosuchelementexception htmlunit-driver

我正在尝试使用 HtmlUnitDriver 登录 marketwatch.com 。我认为该程序永远不会超过登录提示,并且我确实检查了我的电子邮件和密码是否正确......
非常感谢您愿意帮助我!
这是我的注释代码:

static Logger log = Logger.getLogger("com.gargoylesoftware");
    public static void main(String[] args) throws InterruptedException {
        log.setLevel(Level.OFF);
        // Create a new instance of the html unit driver
        WebDriver driver = new HtmlUnitDriver();
        // Go to marketwatch
        driver.get("http://www.marketwatch.com/game/");
        System.out.println(driver.getTitle()); // prints 'Virtual Stock Exchange Games (VSE) - MarketWatch.com'
        // Click on 'login'
        WebElement login = driver.findElement(By.id("profilelogin"));
        login.click();
        System.out.println(driver.getTitle()); // prints 'Log In'
        // Enter username and password
        WebElement email = driver.findElement(By.id("username"));
        email.sendKeys(Ref.EMAIL);
        WebElement pass = driver.findElement(By.id("password"));
        pass.sendKeys(Ref.PASSWORD);
        // Click submit button
        WebElement submit = driver.findElement(By.id("submitButton"));
        submit.click();
        System.out.println(driver.getTitle()); // prints 'Log In' (same title as before we tried to log in)
        // Try to find 
        WebElement game = driver.findElement(By.xpath("//*[@id='maincontent']/section[1]/table/tbody/tr[1]/td[1]/a"));
        // This gets printed to console:
        // Exception in thread "main" org.openqa.selenium.NoSuchElementException: Unable to locate a node using //*[@id='maincontent']/section[1]/table/tbody/tr[1]/td[1]/a
        // I don't think it's ever getting past the login screen...
        // You don't really have to read past this, unless you think I might've messed something else up and you want to fix it.
        game.click();
        WebElement trade = driver.findElement(By.xpath("//*[@id='vse-nav']/ul/li[2]/a"));
        trade.click();
        WebElement searchBar = driver.findElement(By.className("instrumentsearch ac_input unused"));
        searchBar.sendKeys("GOOG");
        searchBar.submit();
        System.out.println(driver.getTitle());

        driver.quit();
    }

最佳答案

尝试启用javascript,网站需要它:

    // Create a new instance of the html unit driver
    WebDriver driver = new HtmlUnitDriver(true);

您也可以通过以下方式启用 JavaScript:

    driver.setJavascriptEnabled(true);

关于java - Selenium HtmlUnitDriver 登录网站,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34700056/

相关文章:

css - 如何在 CSS 中验证文本字段/其他字段在 Selenium 2 中被禁用以进行编辑?

java - 如何使用java将phantomjs连接到selenium

angular - 如何保护 .net 核心 API 项目

python - 如何正确设置 Windows7 以将 Selenium 与 Firefox [TDD with Python] 结合使用?

ios - 处理 WatchKit 扩展和父应用程序之间身份验证更改的好方法是什么?

java - 登录和访问类(class)?

Java Micro Edition (J2ME) - 从记录存储中删除元素

java - 实时处理 MIDI 音符

java - SerializationException 在 Android Studio 中为 LibGDX uiskin 读取 JSON 文件时出错

JavaFX 应用程序启动时间性能