为什么我必须使用selenium单击两次提交输入

时间:2014-01-24 10:59:09

标签: google-chrome testing selenium selenium-webdriver automated-tests

ENV

chrome 32 webdriver2.8

我正在使用selenium(java)来单击提交输入。但我需要点击两次才能激活提交操作。

输入代码:

<input type="submit" disabled="disabled" id="id_submit" name="submit" class="btn-txt" value="OK">

不工作硒代码:

if(submitButton.isEnabled()) {
    new Actions(driver).moveToElement(submitButton).perform();
    submitButton.click(); // this sentence is executed.
}

WORKS

submitButton.click();
submitButton.click();

好吧,第一次单击功能似乎使按钮获得焦点,第二次单击功能主动提交操作。当我使用moveToElement首先聚焦按钮时,点击也不起作用。我可以确保按钮已启用。我想用selenium点击按钮,我不想做点击两次。我该怎么办?有任何想法吗?感谢。

修改

工作

JavascriptExecutor jse = (JavascriptExecutor) driver;
jse.executeScript("document.getElementById('id_submit').focus();");
jse.executeScript("document.getElementById('id_submit').click();");

更新

想象一下,我想输入一个字符串,比如“abcdef123456”。然后执行send_keys。看起来像 enter image description here并启用提交按钮。在第一次单击提交按钮后。它看起来像enter image description here并且提交按钮获得焦点。在第二次单击提交按钮后,将提交表单并重定向页面。我对第一个点击感到困惑。

2 个答案:

答案 0 :(得分:2)

您是否尝试过Expected Conditions课程,

new WebDriverWait(driver,30).until(ExpectedConditions.elementToBeClickable(By.id("id_submit"))).click();

答案 1 :(得分:0)

它可以解决如下: driver.sendkeys( “ABC1234”); (在文本框中输入)

//显式等待 WebDriverWait w = new WebDriverWait(driver,10);

w.until(ExpectedConditions.elementToBeClickable(By.id( “按钮”))); 要么 w.until(ExpectedConditions.visibilityOf((WebElement)By.id(“Button”)));

driver.findElement(By.id( “按钮”))点击();