我无法使用selenium webdriver在我的应用程序的模式登录表单中输入电子邮件地址?

时间:2014-04-25 12:11:09

标签: java selenium selenium-webdriver

public class Login {
    WebDriver driver = new  FirefoxDriver();


    @Test
    public void test() {

            driver.get("http://www.urbanremedy.com/");
            driver.manage().window().maximize();
            driver.manage().timeouts().implicitlyWait(30000, TimeUnit.SECONDS);

            driver.findElement(By.xpath("//*[@id='wrapper']/div[2]/div[3]/div/div/div[2]/div/div/div[1]/a")).click();
            driver.findElement(By.linkText("Login")).click();

            driver.findElement(By.id("youama-email")).clear();
            driver.findElement(By.id("youama-email")).sendKeys("abs");

            driver.findElement(By.name("youama-password")).sendKeys("123456");
            driver.findElement(By.xpath("//[@id='wrapper']/div[2]/div[3]/div/div/div[5]/div/div/div[3]/div[1]/div[3]/div/button")).click();
        }
    }

密码有效,只有问题在于电子邮件地址。它没有被反映,因此我被卡住了。请在这方面帮助我。

3 个答案:

答案 0 :(得分:2)

由于某种原因,电子邮件和密码输入元素不可见(style="display:none"),因此网络驱动程序无法与它们进行交互。如果您点击提交按钮一次,那么它们就会显示(style="display:block"),您可以从那时开始按计划继续。

顺便说一下,你不需要一遍又一遍地找到每一个元素" - 你可以找到它一次,并把它保存在记忆中。

例如,而不是:

driver.findElement(By.id("youama-email")).clear();
driver.findElement(By.id("youama-email")).sendKeys("abs");

你可以这样做:

WebElement e = driver.findElement(By.id("youama-email"));
e.clear();
e.sendKeys("abs");

答案 1 :(得分:0)

尝试使用By.xpath来查找密码,而不是使用By.name。

答案 2 :(得分:0)

如果您想创建一个更大的项目,我还强烈建议您查看页面对象模式https://code.google.com/p/selenium/wiki/PageObjects

这是一种模式,它试图封装页面的Web元素并提供相应页面的服务作为其方法。