【问题标题】:Java, Selenium TimeoutExceptionJava,硒超时异常
【发布时间】: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)) 中做什么?

标签: java selenium junit


【解决方案1】:

出现此错误是因为您在 xpath 中使用“text()”,但应使用“//select[@id='register-dob-month']/option[@价值='05']" 查看您的 HTML(屏幕截图 - http://prntscr.com/k539il) 或者 使用“May”、“April”代替月份数。 此外,您可以尝试使用 Selenium Select 类来操作此下拉菜单:

WebElement Dropdown = driver.findElement(By.cssSelector("select#register-dob-month"));

Select select = new Select(Dropdown);

select.selectByIndex(4);
//or
select.deselectByVisibleText("May");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-19
    • 2021-08-23
    • 1970-01-01
    • 2012-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多