如何在Selenium webdriver中将焦点设置为Web元素

时间:2015-06-17 13:52:27

标签: selenium setfocus

我是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();  第一次工作正常,但不发布用户登录。

3 个答案:

答案 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并更新..