以下是我通常用来查找名称为&#34的元素的内容。电子邮件"
WebElement emailInput = (new WebDriverWait(driver, 10))
.until(ExpectedConditions.presenceOfElementLocated(By
.name("email")));
如果有一个元素模态体,如下所示
WebElement modalBody = enrollForm.findElement(By
.className("modal-body"));
现在,如果我要在另一个WebElement sorta中找到特定的WebElement,比如...
WebElement a = driver.findElement(By.id("KeepSmiling");
WebElement b = a.findElement(By.className("ChocolatesMakeMeSizzle");
此处b
是a
中的元素。由于还有许多其他具有className的div - > ChocolatesMakeMeSizzle
我希望用WebDriverWait
做同样的事情。我使用Thread.sleep(xx)
来避免这个问题,但这是一个非常糟糕的方法。
这是我尝试的(但我意识到我试图减慢一个没有意义的webElement。)
WebElement emailInput = (new WebDriverWait(modalBody, 10))
.until(ExpectedConditions.presenceOfElementLocated(By
.name("email")));
任何提示如何实现这一目标?
忏悔:老实说,我正在避免使用Thread.sleep(xx)这种方法。
我能够使用xpath并找到方法,但我希望能回答我的问题! :)
答案 0 :(得分:3)
WebElement emailInput = (new WebDriverWait(driver, 10))
.until(ExpectedConditions.elementToBeClickable(By
.xpath("some_complex_xpath")));
如果元素存在于DOM上,那么Modal应该没有问题。 我正在测试一个大系统并且所有表单都是模态的,我们在使用ExpectedConditions找到元素时没有任何问题。
另外,为了找到你可以使用XPATH ......
这是一个例子: //输入[contains(@class,' name')] / following :: input [@type =' Button']