Java 在Selenium Webdriver中,在文本框中输入文本后单击按钮
我正在尝试为Gmail构建一个Selenium自动化框架。 我安装了以下工具: JDK、Eclipse、Selenium罐、Gradle、TestNG 我正在尝试登录gmail。但是当我输入我的用户名时,我的错误率就降低了。 它试图在输入用户名之前单击“下一步”按钮 在开发框架时,我是否可以在需要时使用Java 在Selenium Webdriver中,在文本框中输入文本后单击按钮,java,selenium,Java,Selenium,我正在尝试为Gmail构建一个Selenium自动化框架。 我安装了以下工具: JDK、Eclipse、Selenium罐、Gradle、TestNG 我正在尝试登录gmail。但是当我输入我的用户名时,我的错误率就降低了。 它试图在输入用户名之前单击“下一步”按钮 在开发框架时,我是否可以在需要时使用wait? 调用wait时是否需要维护任何标准。 编写任何用户定义的wait方法 错误: 失败:Gmail应该成功 org.openqa.selenium.ElementNotVisibleExc
wait
?
调用wait
时是否需要维护任何标准。
编写任何用户定义的wait
方法
错误:
失败:Gmail应该成功
org.openqa.selenium.ElementNotVisibleException:无法单击元素(警告:服务器未提供任何堆栈跟踪信息)
命令持续时间或超时:207毫秒
我的代码:
@Test
public void gmailLoginShouldBeSuccessful(){
//1.Go to Gmail website
System.setProperty("webdriver.ie.driver", "C:\\Selenium_Softwares_Docs_Videos\\IEDriverServer_x64_3.1.0\\IEDriverServer.exe");
WebDriver driver = new InternetExplorerDriver();
driver.manage().deleteAllCookies();
driver.manage().window().maximize();
driver.get("http://gmail.com");
//2.Fill in username
WebElement userTextBox = driver.findElement(By.id("Email"));
userTextBox.clear();
userTextBox.sendKeys("xxxx");
//3. click on next button
WebElement nxtBtn = driver.findElement(By.id("next"));
nxtBtn.click();
//4.Fill in password
WebElement pwdTextBox = driver.findElement(By.id("Passwd-hidden"));
userTextBox.clear();
userTextBox.sendKeys("xxxxxxx");
//5.Click sign in
WebElement signBtn = driver.findElement(By.id("signIn"));
signBtn.click();
}
您可以使用显式等待来实现您的需求
WebDriverWait wait = new WebDriverWait(yourWebDriver, 5);
wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//xpath_to_element")));
Webdriver将等待5秒钟,以便您的元素能够被单击。您可以使用显式等待来实现您的要求
WebDriverWait wait = new WebDriverWait(yourWebDriver, 5);
wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//xpath_to_element")));
Webdriver将等待5秒钟,您的元素才能被单击。使用Chrome驱动程序而不是internet Explorer:
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.Test;
public class TestCommons {
@Test
public void gmailLoginShouldBeSuccessful() throws InterruptedException {
// 1.Go to Gmail website
System.setProperty("webdriver.chrome.driver", System.getProperty("user.dir") + "\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
driver.manage().window().maximize();
driver.get("http://gmail.com");
// 2.Fill in username
driver.findElement(By.id("Email")).clear();
driver.findElement(By.id("Email")).sendKeys("vishala");
// 3. click on next button
driver.findElement(By.id("next")).click();
// 4.Fill in password
driver.findElement(By.id("Passwd")).sendKeys("vishala");
// 5.Click sign in
driver.findElement(By.id("signIn")).click();
driver.quit();
}
}
希望这对您有用:)使用Chrome驱动程序而不是internet Explorer:
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.Test;
public class TestCommons {
@Test
public void gmailLoginShouldBeSuccessful() throws InterruptedException {
// 1.Go to Gmail website
System.setProperty("webdriver.chrome.driver", System.getProperty("user.dir") + "\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
driver.manage().window().maximize();
driver.get("http://gmail.com");
// 2.Fill in username
driver.findElement(By.id("Email")).clear();
driver.findElement(By.id("Email")).sendKeys("vishala");
// 3. click on next button
driver.findElement(By.id("next")).click();
// 4.Fill in password
driver.findElement(By.id("Passwd")).sendKeys("vishala");
// 5.Click sign in
driver.findElement(By.id("signIn")).click();
driver.quit();
}
}
希望这对您有用:)您能发送一个返回键而不是单击登录按钮吗?您能发送一个返回键而不是单击登录按钮吗?您应该使用pwdTextBox而不是userTextBox设置paswordHi时,等待调整在WATIR(Selenium wrapper)中做得非常好,它检查存在吗?,可见?,启用?可写的?在它与任何元素交互之前,如果它延迟这四个元素中的任何一个,它将等待。试试看,gmail有一个API。为什么不使用它而不是自动化UI?输入文本后可以使用Thread.sleep()。如果这样做有效,那么继续执行一些显式waits()和元素可见性。在设置paswordHi时,应该使用pwdTextBox而不是userTextBox,等待调整在WATIR(Selenium包装器)中做得非常好,它检查存在?、可见?、启用?可写的?在它与任何元素交互之前,如果它延迟这四个元素中的任何一个,它将等待。试试看,gmail有一个API。为什么不使用它而不是自动化UI?输入文本后可以使用Thread.sleep()。如果这样做行得通,那么继续执行一些显式waits()和元素可见性。这可能还没有解决问题。可能满足可单击条件,但尚未输入用户名。这可能无法解决问题。可能满足可单击条件,但尚未输入用户名。