这是我走了多远。但是,我很难自动化下拉菜单中的文本。我试图使用select语句自动化,但没有成功。我在facebook注册页面自动化时使用了select,它运行良好。以下是我在流程中使用的代码
package signUp;
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.safari.SafariDriver;
import org.openqa.selenium.support.ui.Select;
import org.testng.annotations.Test;
import java.util.List;
/**
* Created by san on 4/18/17.
*/
public class LoginCredintials {
@Test
public void GoogleSignup(){
System.setProperty("webdriver.gecko.driver", "/Users/abc/Downloads/geckodriver");
WebDriver driver = new FirefoxDriver();
String baseUrl = "https://accounts.google.com/SignUp?service=mail&continue=https%3A%2F%2Fmail.google.com%2Fmail%2F<mpl=default";
driver.get(baseUrl);
//By ID Text area1
WebElement text1 = driver.findElement(By.id("FirstName"));
text1.clear();
text1.sendKeys("San ");
WebElement text2 = driver.findElement(By.id("LastName"));
text2.clear();
text2.sendKeys("P");
WebElement text3 = driver.findElement(By.xpath(".//*[@id='GmailAddress']"));
text3.clear();
text3.sendKeys("s20077");
WebElement text4 = driver.findElement(By.xpath(".//*[@id='Passwd']"));
text4.clear();
text4.sendKeys("123abcdxy");
WebElement text5 = driver.findElement(By.xpath(".//*[@id='PasswdAgain']"));
text5.clear();
text5.sendKeys("123abcdxy");
WebElement text6 = driver.findElement(By.id("BirthDay"));
text6.clear();
text6.sendKeys("1");
WebElement text7 = driver.findElement(By.id("BirthYear"));
text7.clear();
text7.sendKeys("2000");
WebElement text8 = driver.findElement(By.id("RecoveryPhoneNumber"));
text8.clear();
text8.sendKeys("9222103436");
WebElement text9 = driver.findElement(By.id("RecoveryEmailAddress"));
text9.clear();
text9.sendKeys("abc_gh@yahoo.com");
Select droplist1 = new Select(driver.findElement(By.id("gender")));
droplist1.selectByVisibleText("Male");
Select droplist2 = new Select(driver.findElement(By.id("BirthMonth")));
droplist2.selectByVisibleText("March");
Select droplist3 = new Select(driver.findElement(By.xpath(".//*[@id='CountryCode']/div")));
droplist3.selectByVisibleText("United States");
WebElement text10 = driver.findElement(By.id("submitbutton"));
text10.click();
}
}
答案 0 :(得分:0)
您必须编写一个自定义方法来从所需的下拉列表中选择值,因为它们不是标准的选择组件。因此,您需要先单击下拉列表并等待选项出现。一旦选项可见,您可以单击所需选项。我写了一个通用方法&#39; googleSelect&#39;为此目的:
package signUp;
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;
import org.testng.annotations.Test;
/**
* Created by san on 4/18/17.
*/
public class LoginCredintials {
static WebDriver driver = null;
@Test
public void GoogleSignup(){
System.setProperty("webdriver.gecko.driver", "/Users/abc/Downloads/geckodriver");
driver = new FirefoxDriver();
String baseUrl = "https://accounts.google.com/SignUp?service=mail&continue=https%3A%2F%2Fmail.google.com%2Fmail%2F<mpl=default";
driver.get(baseUrl);
//By ID Text area1
WebElement text1 = driver.findElement(By.id("FirstName"));
text1.clear();
text1.sendKeys("San ");
WebElement text2 = driver.findElement(By.id("LastName"));
text2.clear();
text2.sendKeys("P");
WebElement text3 = driver.findElement(By.xpath(".//*[@id='GmailAddress']"));
text3.clear();
text3.sendKeys("s20077444");
WebElement text4 = driver.findElement(By.xpath(".//*[@id='Passwd']"));
text4.clear();
text4.sendKeys("123abcdxy");
WebElement text5 = driver.findElement(By.xpath(".//*[@id='PasswdAgain']"));
text5.clear();
text5.sendKeys("123abcdxy");
WebElement text6 = driver.findElement(By.id("BirthDay"));
text6.clear();
text6.sendKeys("1");
WebElement text7 = driver.findElement(By.id("BirthYear"));
text7.clear();
text7.sendKeys("2000");
WebElement text8 = driver.findElement(By.id("RecoveryPhoneNumber"));
text8.clear();
text8.sendKeys("9222103436");
WebElement text9 = driver.findElement(By.id("RecoveryEmailAddress"));
text9.clear();
text9.sendKeys("abc_gh@yahoo.com");
googleSelect(By.id("Gender"), "Male");
googleSelect(By.id("BirthMonth"), "March");
googleSelect(By.xpath(".//*[@id='CountryCode']/div"), "United States");
WebElement text10 = driver.findElement(By.id("submitbutton"));
text10.click();
driver.quit();
}
private static void googleSelect(By by, String text) {
driver.findElement(by).click();
WebDriverWait wait = new WebDriverWait(driver, 10);
wait.until(ExpectedConditions.visibilityOf(
driver.findElement(By.xpath("//div[@class='goog-menu goog-menu-vertical']//div[text()='" + text + "']"))));
driver.findElement(By.xpath("//div[@class='goog-menu goog-menu-vertical']//div[text()='" + text + "']")).click();
}
}
尝试上面的代码并告诉我,如果它适合您。
答案 1 :(得分:0)
检查页面的html端。有时复选框被写为链接。因此,您必须先单击下拉列表,然后单击您必须选择的元素。我可能不对,但如果可以,请检查。
答案 2 :(得分:0)
刚看到注册页面。看起来它构成了div和li元素所以选择赢了工作。我还看到将值设置到隐藏字段中,例如&#34; HiddenGender&#34;,&#34; HiddenBirthMonth&#34;。尝试开发人员工具检查chrome上的元素以获取所需的字段,并直接将值设置为这些隐藏元素。希望这会有所帮助。