用Firefox开发基于Selenium WebDriver的Java程序登录百度知道时程序卡住

发布于 2022-09-01 17:15:31 字数 1908 浏览 12 评论 0

package simulators;

import java.util.concurrent.TimeUnit;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;

public class BaiduZhidaoSimulator {

    public static void main(String[] args) throws Exception{
        System.setProperty("webdriver.firefox.bin",
            "D:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe");
        WebDriver driver = new FirefoxDriver();
        String baseUrl = "http://zhidao.baidu.com";
        driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);

        driver.get(baseUrl + "/");
        driver.findElement(By.id("userbar-login")).click();

        Thread.sleep(2000);
        //卡在这儿
        driver.findElement(By.id("TANGRAM__PSP_8__userName")).clear(); 
        driver.findElement(By.id("TANGRAM__PSP_8__userName"))
              .sendKeys("myusername");
        driver.findElement(By.id("TANGRAM__PSP_8__password")).clear();
        driver.findElement(By.id("TANGRAM__PSP_8__password"))
              .sendKeys("mypassword");
        driver.findElement(By.id("TANGRAM__PSP_8__submit")).click();

        // "去签到"或者"已签到"的按钮的cssSelector都是a.go-sign-in
        Thread.sleep(3000);
        driver.findElement(By.cssSelector("a.go-sign-in")).click();

        String currentSignStatus = driver.findElement(
        By.cssSelector("a.go-sign-in")).getText();
        System.out.println("currentSignStatus="+currentSignStatus);
        //"点击签到"按钮
        driver.findElement(By.id("sign-in-btn")).click();

        driver.quit();
    }

}

我用Selenium WebDrvier写的百度知道的模拟登陆程序,用的是Firefox的FirefoxDriver,这个程序打开了登录窗口,但卡住在了

driver.findElement(By.id("TANGRAM__PSP_8__userName")).clear(); 

这行代码之前(就是注释里“//卡住”的地方),无限等待,没有输入用户名。
按说即使找不到该元素也应该在10秒后超时抛出异常,
请教这是为什么?谁能帮忙调试一下呢,谢谢了.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

彩扇题诗 2022-09-08 17:15:31

请参考 使用Selenium模拟用户登录支付宝账户查询交易详情

你这种情况未必会抛出异常,建议可以换个浏览器测试,这种情况需要慢慢排查,包括排查父元素的style属性以及使用until方法测试。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文