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。看起来像 并启用提交按钮。在第一次单击提交按钮后。它看起来像并且提交按钮获得焦点。在第二次单击提交按钮后,将提交表单并重定向页面。我对第一个点击感到困惑。
答案 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( “按钮”))点击();