使用javascript、actions和webdriver单击元素?
我们可以使用以下方法单击web元素使用javascript、actions和webdriver单击元素?,javascript,selenium,selenium-webdriver,Javascript,Selenium,Selenium Webdriver,我们可以使用以下方法单击web元素 myWebElement.click(); 或 或 这些方法有什么区别 myWebElement.click() 操作(驱动程序).单击(myWebElement).build().perform() click方法和actions类都属于webdriver。Action类用于模拟复杂的用户手势(包括拖放或使用控制键单击多个元素等操作)。click方法用于单击相应的webElement(按钮、链接等).Selenium Webdriver使用浏览器的本机支持
myWebElement.click();
或
或
这些方法有什么区别
myWebElement.click()
操作(驱动程序).单击(myWebElement).build().perform()
click方法和actions类都属于webdriver。Action类用于模拟复杂的用户手势(包括拖放或使用控制键单击多个元素等操作)。click方法用于单击相应的webElement(按钮、链接等).Selenium Webdriver使用浏览器的本机支持,使用id/xpath等定位器将DOM元素映射到WebElement对象
JavaScriptExecutor是一个接口,它提供了通过selenium驱动程序执行Javascript的机制。它提供“executescript”和“executeAsyncScript”方法,以便在当前所选框架或窗口的上下文中运行外部JavaScript。对于executescript,它将返回一个DOM元素,然后将其转换为WebElement
WebDriver在浏览器上模拟的点击与实际用户使用javascript调用的点击类似
示例场景:
<html>
<body>
<button type = "button" id ="test" style = "display:none"> clickme </button>
</body>
</html>
如果您使用上面的javascript/jquery单击元素,那么无论按钮是否可见,它都会单击按钮,这是错误的,因为最终用户将无法看到/单击按钮,但您的脚本将通过。因此,寓意是尽可能使用webdriver函数,而不是使用javascript
希望这对您有所帮助。如果您有任何疑问,请返回谢谢Vicky的澄清。回答得好Vicky!
Actions(driver).click(myWebElement).build().perform();
<html>
<body>
<button type = "button" id ="test" style = "display:none"> clickme </button>
</body>
</html>
((JavascriptExecutor)driver).executeScript("$('#test').click();");//or
((JavascriptExecutor)driver).executeScript("document.getElementById('test').click();");