用Firefox开发基于Selenium WebDriver的Java程序登录百度知道时程序卡住
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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
请参考 使用Selenium模拟用户登录支付宝账户查询交易详情
你这种情况未必会抛出异常,建议可以换个浏览器测试,这种情况需要慢慢排查,包括排查父元素的style属性以及使用until方法测试。