Javascript 如何找出元素被短暂禁用的原因?
我正在编写自动化代码,以便在chrome浏览器中打开的网页上单击按钮。结果表明,按钮很快加载到DOM中,但在几毫秒内不可单击。在禁用期间,它甚至没有被GUI标记为禁用。因此,我的自动化代码立即找到按钮并单击它,但什么也没发生 一个原因可能是,在禁用时间内,按钮代码中有一个名为“disabled”的属性。我怎样才能发现事实确实如此 是否有其他方法暂时禁用按钮/元素?如果是,请告诉我哪些方法以及如何检查使用了哪些方法Javascript 如何找出元素被短暂禁用的原因?,javascript,html,css,Javascript,Html,Css,我正在编写自动化代码,以便在chrome浏览器中打开的网页上单击按钮。结果表明,按钮很快加载到DOM中,但在几毫秒内不可单击。在禁用期间,它甚至没有被GUI标记为禁用。因此,我的自动化代码立即找到按钮并单击它,但什么也没发生 一个原因可能是,在禁用时间内,按钮代码中有一个名为“disabled”的属性。我怎样才能发现事实确实如此 是否有其他方法暂时禁用按钮/元素?如果是,请告诉我哪些方法以及如何检查使用了哪些方法 编辑-根据rorys的建议,我添加了代码以在页面加载时打印元素html。html中
编辑-根据rorys的建议,我添加了代码以在页面加载时打印元素html。html中没有禁用的属性。我遗漏了什么吗?如果没有看到代码或预览问题本身,很难说 可能是按钮被添加到DOM中,但是单击事件处理程序不会立即应用,这会使它看起来被禁用,直到它们被应用为止 可能有一个暂时禁用的属性,您可以在自动化代码中轻松地测试它;即使它类似于
console.log(元素)
在控制台中查看元素的HTML
JavascriptExecutor js = (JavascriptExecutor) driver;
WebElement element = new WebDriverWait(driver, 30)
.until(ExpectedConditions.elementToBeClickable(By.xpath(xpathString)));
js.executeScript("arguments[0].click()", topic);
JavascriptExecutor
比简单地使用元素执行得更好。单击()
此外,使用WebDriverWait
和conditionelementtobelickable
将下一个代码的执行延迟30秒,如上所示
这个答案可能已经过了问题发布的时间,但希望它能有所帮助。是不是在没有onclick事件的情况下添加了按钮,然后不久又添加了此事件?在这种情况下,尽管按钮没有被禁用,但出于这个原因,该按钮可能不会执行任何操作。Rory,感谢您的建议。我用自动化脚本中html元素代码的输出更新了这个问题。另外,我如何检查单击处理程序何时被应用?为什么说JavascriptExecutor比element.click更好?