我正在尝试在搜索框中输入文本,然后单击文本应打开其下的链接。 到目前为止,我能够在搜索框中输入文本,但输入或单击或提交无法识别。理想情况下,如果我们输入文本并单击Enter,它应该在搜索文本中显示元素。
Webdriver代码:
WebDriverWait wait = new WebDriverWait(wd, 100);
wait.until(ExpectedConditions.presenceOfElementLocated(By.className("span16")));
WebElement signupForm = wd.findElement(By.className("span16"));
signupForm.sendKeys("MTestin");
WebDriverWait wait1 = new WebDriverWait(wd, 100);
wait1.until(ExpectedConditions.presenceOfElementLocated(By.className("omedia-search"))).click();
页面HTML:
<div class="row-fluid sort-text">
<input id="searchbox" class="span16" type="text" placeholder="showing all result" data-provide="typeahead" name="input" />
<i class="omedia-search"></i>
</div>
答案 0 :(得分:0)
您正在click
上wait.until...
,而不是元素本身。
您也需要为按钮执行wd.findElement
,就像您在搜索框中所做的那样。
此外,我认为可以安全地假设在第一次wait
调用完成后页面已完全加载,因此也无需等待找到该按钮。
我将如何做到这一点:
WebDriverWait wait = new WebDriverWait(wd, 100);
wait.until(ExpectedConditions.presenceOfElementLocated(By.className("span16")));
WebElement signupForm = wd.findElement(By.className("span16"));
signupForm.sendKeys("MTestin");
WebElement submitButton = wd.findElement(By.className("omedia-search"));
submitButton.click();
顺便说一下,您没有搜索非常好的术语 - 课程span16
是结构性的,因此如果页面设计发生变化,它可能会出现在其他地方。而是搜索该字段的id
,因为这保证在正确构建的页面上是唯一的。