首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >爪哇,硒TimeoutException

爪哇,硒TimeoutException
EN

Stack Overflow用户
提问于 2018-07-11 08:51:19
回答 1查看 170关注 0票数 0

具有此错误的

//select@id='register-dob-month'/optiontext()='5':org.openqa.selenium.TimeoutException:预期条件失败:等待By.xpath: By.xpath定位的元素的可见性

SignUpPage:

代码语言:javascript
复制
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:

代码语言:javascript
复制
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();
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-11 09:12:05

发生此错误是因为您在xpath中使用了"text()",但是应该使用查看您的HTML (屏幕快照- http://prntscr.com/k539il)或使用"May“、” because “而不是月号。此外,您还可以尝试使用对此下拉列表进行操作:

代码语言:javascript
复制
WebElement Dropdown = driver.findElement(By.cssSelector("select#register-dob-month"));

Select select = new Select(Dropdown);

select.selectByIndex(4);
//or
select.deselectByVisibleText("May");
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51281152

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档