我正在将Cucumber与Selenium WebDriver一起用于测试应用程序,并且我刚刚注意到,无论我将“ ExpectedConditions.textToBe”方法的参数如何设置,我的测试都通过了特定区域。
测试的这一部分简单地检查在添加用户后,正确的文本是否出现在用户角色表中:
public void admin_can_see_the_new_role_in_the_list() throws Throwable {
// Write code here that turns the phrase above into concrete actions
//throw new PendingException();
Thread.sleep(3000);
ExpectedConditions.textToBe(By.xpath("//*[@id=\"role-nbbbamze\"]"), "account manasdfsdfger");
ExpectedConditions.textToBe(By.xpath("//*[@id=\"app\"]/dizz/dib[2]/divz/div[2]zzz/table/tbody/tr[11]/td[2]"), "Accmasfsdnager");
ExpectedConditions.textToBe(By.xpath("//*[@id=\"app\"]/dbiv/div[2]/div/dziv[2]/tzable/tzzzbody/tr[11]/td[3]"), "Can acvfcess the normal dashboard");
}
如您所见,我在参数中添加了随机字符,并且测试运行并仍然通过。它应该失败,因为我定义的xpath不存在-或我声明的文本与该xpath中的任何内容都不匹配。
我显然在使用ExpectedConditions错误,但我不知道在哪里或如何。
在此先感谢大家!
最佳答案
您必须将其与以下等待对象结合使用:
WebDriverWait wait = new WebDriverWait(driver, 60);
wait.until(ExpectedConditions.textToBe(By.xpath("//*[@id=\"app\"]/dbiv/div[2]/div/dziv[2]/tzable/tzzzbody/tr[11]/td[3]"), "Can acvfcess the normal dashboard"));