我是Selenium的新手。我正在通过在MakeMyTrip网站上自动化一些测试场景来学习。
场景:编辑创建的用户帐户。
代码:(尚未完成)
public class AccountEdit {
@Test
public void AccEdit()
{
WebDriver driver = new FirefoxDriver();
driver.get("http://www.makemytrip.com/");
driver.manage().window().maximize();
driver.findElement(By.id("ssologinlink")).click();
driver.findElement(By.id("username")).sendKeys("abcd@gmail.com");
driver.findElement(By.id("password_text")).sendKeys("*****");
driver.findElement(By.id("login_btn")).click();
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
driver.findElement(By.id("ssologinlink")).click(); **======> Here I notice the click is not happening to select the My Account or My Profile from the drop down.**
}
}
请在登录后告诉我如何将重点放回 webelement 。
driver.findElement(By.id("ssologinlink")).click();
第一次工作正常,但不发布用户登录。
答案 0 :(得分:1)
感谢您的评论。登录后元素ID未更改。在点击下拉菜单之前,我必须等待用户名出现。
以下代码对我有用:
公共类AccountEdit {
@Test
public void AccEdit()
{
WebDriver driver = new FirefoxDriver();
driver.get("http://www.makemytrip.com/");
driver.manage().window().maximize();
driver.findElement(By.id("ssologinlink")).click();
driver.findElement(By.id("username")).sendKeys(""abcd@gmail.com"");
driver.findElement(By.id("password_text")).sendKeys("*******!");
driver.findElement(By.id("login_btn")).click();
WebElement myDynamicElement = (new WebDriverWait(driver, 10)).until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//span[@id='ssologinlink']/strong[contains(text(),'user')]")));
myDynamicElement.click();
}
}
答案 1 :(得分:0)
尝试使用预期等待显式条件等待元素可点击。请参阅文档here
public class AccountEdit {
@Test
public void AccEdit()
{
WebDriver driver = new FirefoxDriver();
driver.get("http://www.makemytrip.com/");
driver.manage().window().maximize();
driver.findElement(By.id("ssologinlink")).click();
driver.findElement(By.id("username")).sendKeys("abcd@gmail.com");
driver.findElement(By.id("password_text")).sendKeys("*****");
driver.findElement(By.id("login_btn")).click();
//Waiting for the element to be clickable with Explicit wait
WebElement myDynamicElement = (new WebDriverWait(driver, 10))
.until(ExpectedConditions.elementToBeClickable(By.id("ssologinlink")));
myDynamicElement.click();
}
}
答案 2 :(得分:-1)
一些时间元素ID在登录后变更(类似于动态ID)..请参阅。再次检查元素ID并更新..