【发布时间】:2018-07-11 08:51:19
【问题描述】:
出现此错误:
org.openqa.selenium.TimeoutException:预期条件失败: 等待 By.xpath 定位的元素的可见性: //select[@id='register-dob-month']/option[text()='5'] (试了5 秒(秒),间隔 500 毫秒)
注册页面:
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;
}
注册测试:
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();
}
【问题讨论】:
-
这意味着您的网站有 5 秒钟没有打开。隐式增加到 30。
-
@SeniorPomidor 没用,之前试过
-
您是否在 chrome 控制台上手动调试过您的 xpath?
-
@Роман 你到底想在
xpath(format(monthDropDownOption, month))中做什么?