Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在填写文本字段之前,跳转到selenium中的下一个文本字段_Java_Selenium_Selenium Webdriver_Webdriver - Fatal编程技术网

Java 在填写文本字段之前,跳转到selenium中的下一个文本字段

Java 在填写文本字段之前,跳转到selenium中的下一个文本字段,java,selenium,selenium-webdriver,webdriver,Java,Selenium,Selenium Webdriver,Webdriver,我试图将用户名和密码放入网页中相应的文本字段中。首先,我通过id查找电子邮件的元素,并将其放入电子邮件,然后通过id查找密码的元素,并将其放入密码,但在文本框中填写电子邮件字段之前,它会跳转到密码字段并完成任务,我需要等待填写电子邮件,然后再跳转到密码字段 我尝试了隐式和显式等待,但两者都不起作用请帮助我 我正在使用firefox和selenium 2.44 // Enter Email driver.findElement(By.id("Email")).sendKeys("x

我试图将用户名和密码放入网页中相应的文本字段中。首先,我通过id查找电子邮件的元素,并将其放入电子邮件,然后通过id查找密码的元素,并将其放入密码,但在文本框中填写电子邮件字段之前,它会跳转到密码字段并完成任务,我需要等待填写电子邮件,然后再跳转到密码字段

我尝试了隐式和显式等待,但两者都不起作用请帮助我
我正在使用firefox和selenium 2.44

    // Enter Email
    driver.findElement(By.id("Email")).sendKeys("xxxxxxxx@gmail.com");

    WebElement myDynamicElement = (new WebDriverWait(driver, 10)).until(ExpectedConditions.presenceOfElementLocated(By.id("Email")));
    //driver.manage().timeouts().pageLoadTimeout(5, TimeUnit.SECONDS);

    //Enter pwd     
    driver.findElement(By.id("Passwd")).sendKeys("xxxxx");
    driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
    // Click the sign in button
    driver.findElement(By.id("signIn")).click();
编辑:这是我的完整代码

import java.util.concurrent.TimeUnit;

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 Sample {
    public static void main(String[] args) {

        WebDriver driver = new FirefoxDriver();     

        driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);

        driver.get("https://www.google.com/");
        driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);

        driver.manage().window().maximize();

        driver.findElement(By.id("gbqfq")).sendKeys("gmail");
        driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);

        driver.findElement(By.id("gbqfb")).click();


        driver.findElement(By.xpath("//*[@id=\"rso\"]/div[2]/li[1]/div/h3/a[1]")).click();

        // Click the sign in button
        driver.findElement(By.id("gmail-sign-in")).click();
        driver.manage().timeouts().pageLoadTimeout(10, TimeUnit.SECONDS);

        // Enter Email
        driver.findElement(By.id("Email")).sendKeys("xxx@gmail.com");


        WebElement myDynamicElement = (new WebDriverWait(driver, 10)).until(ExpectedConditions.presenceOfElementLocated(By.id("Email")));

        //Enter pwd     
        driver.findElement(By.id("Passwd")).sendKeys("@@@@xxx");
        driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
        // Click the sign in button
        driver.findElement(By.id("signIn")).click();

        }

}

做一件事,首先输入email字段,然后在email字段上执行get text,它将提供您所输入的内容,如果是真的,请转到密码文本框。

尽管我在最后尝试时您的代码运行良好,但我仍然修改了现有代码。请查看这是否适用于您:

     WebDriver driver = new FirefoxDriver();     

        driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);

        driver.get("https://www.google.com/");

        driver.manage().window().maximize();

        driver.findElement(By.id("gbqfq")).sendKeys("gmail");

        driver.findElement(By.id("gbqfb")).click();


        driver.findElement(By.xpath("//a[.='Gmail - Google']")).click(); //Modified with a relative xpath

        /*This part of clicking on Sign In Button wasn't coming up for me, 
          So, I've commented it. Please Uncomment, if this page is coming up for you*/
        // Click the sign in button
       // driver.findElement(By.id("gmail-sign-in")).click();
        //driver.manage().timeouts().pageLoadTimeout(10, TimeUnit.SECONDS);

        // Enter Email
        driver.findElement(By.id("Email")).sendKeys("testing@gmail.com");

        //Enter pwd     
        driver.findElement(By.id("Passwd")).sendKeys("tesing&*78");

        // Click the sign in button
        driver.findElement(By.id("signIn")).click();

我也有类似的情况。我的应用程序有一个回发脚本,导致文本框跳转到另一个位置。我的解决方法是先单击.click()这个webelement,然后再执行.sendkey()。希望这对您也有帮助。

您说过,它完成了任务,而无需输入电子邮件字段。从代码上看,它似乎是一个登录页面。那么,它是否会抛出一些与“请填写电子邮件字段”或“电子邮件字段不能为空”或其他相关的错误?设置driver.manage().timeouts().implicitlyWait(30,TimeUnit.SECONDS)@在电子邮件中填充一些字符。我想我的电子邮件是example@gmail.com,然后填写“考试”和其他部分进入密码字段,而不是等待完全填写电子邮件字段,@Lakna:如果这是一个您尝试自动运行的公共站点,您可以共享链接吗?我正在尝试自动登录我的gmail帐户。如果您需要,我可以发送我的完整代码。它没有完全输入电子邮件,在完成电子邮件之前,它会进入密码字段。所以,当我在email字段中获取文本时,它总是错误的,正如您所说的email id被输入到pwd文本框中,这意味着pwd文本框元素id与email id文本框相同,或者它可能在运行时发生更改,有时元素id会动态更改,执行时,检查webdriver窗口上的元素id,并验证它们是否正确