gpt4 book ai didi

javascript - 单击使用 javascript 与操作与 webdriver 的元素?

转载 作者:可可西里 更新时间:2023-11-01 02:35:39 25 4
gpt4 key购买 nike

我们可以使用以下方法点击网页元素。

myWebElement.click();

JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("arguments[0].click();", myWebElement);

Actions(driver).click(myWebElement).build().perform();

这些方法有什么区别?

最佳答案

myWebElement.click();

Actions(driver).click(myWebElement).build().perform();

click方法和actions类都属于webdriver。Action类用于模拟复杂的用户手势(包括拖放或使用Control键单击多个元素等 Action )。click方法用于单击相应的webElement (按钮、链接等)。Selenium Webdriver 使用浏览器的 native 支持,使用 id/xpath 等定位器将 DOM 元素映射到 WebElement 对象。

JavaScriptExecutor 是一个接口(interface),它提供了通过 selenium 驱动程序执行 Javascript 的机制。它提供“executescript”和“executeAsyncScript”方法,以在当前选定的框架或窗口的上下文中运行外部 JavaScript。在 executescript 的情况下,它将返回一个 DOM 元素,然后将其转换为 WebElement

与使用 javascript 调用的点击相比,WebDriver 在浏览器上模拟的点击与实际用户所做的类似

示例场景:

<html>
<body>
<button type = "button" id ="test" style = "display:none"> clickme </button>
</body>
</html>

如果您使用 webdriver 中的点击功能点击“点击我”按钮,您将得到一个 org.openqa.selenium.ElementNotVisibleException(元素不可见异常),这是正确的,因为元素存在在 DOM 中,但不显示给用户,因为设置了 css 样式 display:none

((JavascriptExecutor)driver).executeScript("$('#test').click();");//or
((JavascriptExecutor)driver).executeScript("document.getElementById('test').click();");

如果您使用上面的 javascript/jquery 来点击元素,那么无论按钮是否可见,它都会点击按钮,这是错误的,因为最终用户将无法看到/点击按钮但是你的脚本会通过。所以道德是尽可能使用 webdriver 函数而不是使用 javascript

希望这对你有帮助。如果你有任何疑问,请回来

关于javascript - 单击使用 javascript 与操作与 webdriver 的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32045218/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com