对于Selenium java代码,Click()或Submit()不起作用

时间:2014-07-14 11:52:00

标签: java javascript html selenium automation

我正在尝试在搜索框中输入文本,然后单击文本应打开其下的链接。 到目前为止,我能够在搜索框中输入文本,但输入或单击或提交无法识别。理想情况下,如果我们输入文本并单击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-s‌​earch"))).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>

1 个答案:

答案 0 :(得分:0)

您正在clickwait.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-s‌​earch"));
submitButton.click();

顺便说一下,您没有搜索非常好的术语 - 课程span16是结构性的,因此如果页面设计发生变化,它可能会出现在其他地方。而是搜索该字段的id,因为这保证在正确构建的页面上是唯一的。