我正在尝试使用selenium java代码自动登录http://wallethub.com/。 点击登录链接后,会出现一个包含用户名和密码字段的iframe模式弹出窗口,但是我无法使用以下selenium代码找到用户名字段。
WebDriver d = new FirefoxDriver();
d.get("http://wallethub.com/profile/test_insurance_company/");
WebElement signIn = d.findElement(By.linkText("Sign In"));
signIn.click();
WebElement frame = d.findElement(By.tagName("iframe"));
WebDriver.TargetLocator locator = d.switchTo();
WebDriver frameDriver = locator.frame(frame);
WebElement active = locator.activeElement();
frameDriver.findElement(By.id("overlay-username")).sendKeys(user);
我的代码在最后一行死掉,说无法找到“overlay-username”字段,但是我已经验证,这个字段存在于firebug控制台中。
这是在linux上。
任何帮助将不胜感激。
答案 0 :(得分:0)
正如@Keikoku假设你正在使用错误的iframe。页面中还包含GoogleTagManger。如果您选中frame.getAttribute("src")
,则会看到https://apis.google.com/...
。
您可以使用此选择器选择正确的IFrame:
frame = driver.findElement(By.cssSelector("#wh-overlay-frame-inside iframe"));