具有此错误的:
//select@id='register-dob-month'/optiontext()='5':org.openqa.selenium.TimeoutException:预期条件失败:等待By.xpath: By.xpath定位的元素的可见性
SignUpPage:
public class SignUpPage {
private WebDriver driver;
public SignUpPage(WebDriver driver) {
this.driver = driver;
}
private By monthDropDown = By.cssSelector("select#register-dob-month");
private String monthDropDownOption = "//select[@id='register-dob-month']/option[text()='%s']";
private By dayField = By.cssSelector("input#register-dob-day");
private By yearField = By.cssSelector("input#register-dob-year");
private String genderRadioButton = "//li[@id='li-gender']/label[normalize-space()='Male']/input";
private By shareCheckbox = By.cssSelector("input#register-thirdparty");
public SignUpPage setMonth(String month) {
driver.findElement(monthDropDown).click();
new WebDriverWait(driver, 5).until(visibilityOfElementLocated(xpath(format(monthDropDownOption, month)))).click();
return this;
}
public SignUpPage typeDay(String day) {
driver.findElement(dayField).sendKeys(day);
return this;
}
public SignUpPage typeYear(String year) {
driver.findElement(yearField).sendKeys(year);
return this;
}SignUpTest:
public class SignUpTest {
WebDriver driver;
SignUpPage page;
@Before
public void setUp(){
driver = new ChromeDriver();
driver.manage().timeouts().implicitlyWait(5,TimeUnit.SECONDS);
driver.get("https://www.spotify.com/int/signup");
}
@Test
public void typeInvalidYear(){
page = new SignUpPage(driver);
page.setMonth("5")
.typeDay("20")
.typeYear("88");
Assert.assertTrue(page.isErrorVisible("Please enter a valid year."));
Assert.assertFalse(page.isErrorVisible("When were you born?"));
}
@After
public void tearDown() {
driver.quit();
}发布于 2018-07-11 09:12:05
发生此错误是因为您在xpath中使用了"text()",但是应该使用查看您的HTML (屏幕快照- http://prntscr.com/k539il)或使用"May“、” because “而不是月号。此外,您还可以尝试使用对此下拉列表进行操作:
WebElement Dropdown = driver.findElement(By.cssSelector("select#register-dob-month"));
Select select = new Select(Dropdown);
select.selectByIndex(4);
//or
select.deselectByVisibleText("May");https://stackoverflow.com/questions/51281152
复制相似问题