步骤:
2.填写有效的电子邮件 - 确定
3按下一步 - 确定
按id="Passwd"
FAIL
由于有效的输入字段id= "Passwd"
,测试失败。
但我检查了gmail.com,该字段有id =" Passwd"和
Name="Passwd"
。我尝试使用CSS定位器并再次测试失败。
我试图在点击"下一步"之间留出时间差。并将密码填入现场。没帮助。
也许是因为当您将电子邮件放入字段并单击"下一步"有一些脚本转移"电子邮件输入表格"到"密码输入表格" 我怎么能解决这个问题?
import org.junit.After;
import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
public class GmailSIgnInTest {
WebDriver driver = new FirefoxDriver();
@Test
public void loginShouldBeSuccessfull() {
driver.get("http://gmail.com");
WebElement userNameTextBox = driver.findElement(By.id("Email"));
userNameTextBox.clear();
userNameTextBox.sendKeys("MY EMAIL HERE");
WebElement userNextButtonClick = driver.findElement(By.id("next"));
userNextButtonClick.click();
WebElement userPasswordTextBox = driver.findElement(By.id("Passwd")); // TEST FAIL
userPasswordTextBox.clear();
userPasswordTextBox.sendKeys("MY PASSWORD HERE")
答案 0 :(得分:0)
您可以尝试使用XPath:
WebElement userPasswordTextBox = driver.findElement(By.Xpath("//*[@id="Passwd"]"));
答案 1 :(得分:0)
您需要等到元素出现在页面上。
检查this
WebDriverWait wait = new WebDriverWait(webDriver, 5);
By passwordLocator = By.id("Passwd");
wait.until(ExpectedConditions.elementToBeClickable(passwordLocator));
WebElement userPasswordTextBox = webDriver.findElement(passwordLocator);
userPasswordTextBox.clear();
userPasswordTextBox.sendKeys("MY PASSWORD HERE");
答案 2 :(得分:0)
尝试在调用findElement之前刷新html:
webDriver.switchTo().DefaultContent();
如果它没有帮助尝试: 单击按钮后,您可以访问其他html源和不同的框架 用框架检查元素是否存在,如果框架不同,请尝试:
webDriver.switchTo().frame("<FRAME NAME OR ID>");
答案 3 :(得分:0)
等待元素加载是关键......
试试这个
WebElement myDynamicElement = (new WebDriverWait(driver, 10)) .until(ExpectedConditions.presenceOfElementLocated(By.name("Passwd")));
WebElement userPasswordTextBox = driver.findElement(By.name("Passwd"));
Or
WebElement userPasswordTextBox = driver.findElement(By.id("Passwd"));
它对我有用。
答案 4 :(得分:0)
尝试使用xPath
WebElement userPasswordTextBox = driver.findElement(By.Xpath("// [@id="Passwd"]"));