Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用javascript、actions和webdriver单击元素?_Javascript_Selenium_Selenium Webdriver - Fatal编程技术网

使用javascript、actions和webdriver单击元素?

使用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使用浏览器的本机支持

我们可以使用以下方法单击web元素

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();");