当前位置: 首页 > 面试题库 >

使用javascript vs动作vs webdriver单击元素?

江煜
2023-03-14
问题内容

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

myWebElement.click();

要么

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

要么

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

这些方法有什么区别?


问题答案:

myWebElement.click();

Actions(驱动程序).click(myWebElement).build()。perform();

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

JavaScriptExecutor是一个接口,提供通过硒驱动程序执行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中,但由于display:none设置了CSS样式而不会显示给用户

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

如果您使用上述javascript /
jquery单击该元素,则无论按钮是否可见,它都会单击该按钮,这是错误的,因为最终用户将无法看到/单击该按钮,但是您的脚本将通过。因此,道德是尝试尽可能使用webdriver函数,而不是使用javascript。

希望这对您有所帮助。如有任何疑问,请尽快回来



 类似资料:
  • 问题内容: 我想知道如何启用对伪元素的单击(我链接到下面的JSfiddle上div的橙色部分)。我读过,由于伪元素不在DOM中,因此您需要对此进行破解。不幸的是,我找不到实际显示有效代码的现有Stackoverflow问答。 HTML: CSS: 问题答案: 一种解决方法是将a动态添加到该项目并为其分配click方法。 CSS

  • 如何使用selenium Python从主机A(在本例中为jsfiddle.net)单击此处的红色按钮?(java脚本限制策略错误,不让我去做)。我也不想直接点击红色按钮。谢了。

  • 我试图使用Selenium来单击::after伪元素。我意识到这无法通过WebDriver直接实现,但似乎无法找到一种使用Javascript实现的方法。 下面是DOM的外观: 上面的元素是这样的。对象的左边是按钮元素,后面的:元素是右边,箭头在单击时会下拉框。正如你所看到的,右边没有任何标识符,这就是为什么很难做到这一点的部分原因。 我在stackoverflow中看到了这两个链接,并试图将答案

  • 我正试图点击一个硒元素。它是一个复选框,包含以下HTML代码: 包含复选框和术语的段落代码: 我尝试过三种不同的方法,但都不奏效: 请帮助解决其他问题。

  • 我搞不懂这个。 我在这个网站上工作,我使用Python中的selenium来单击类名“yellow showPopupUnder”下的第一个元素(屏幕的主要部分有20行关于房屋的黄色信息)。 当我让Selenium点击该行后,它会打开并显示更多信息。我对有“选中”和“未选中”框的部分感兴趣。这些复选框位于这样的div中: 未选中的框位于一个div中,如下所示: 我试着用几种方法联系他们: 我还尝试

  • 我正试图使用chrome Driver从greytip web portal下载PDF格式的工资单。我正试图使用“driver.findelement(by.linktext(”salary“)).click();”点击链接工资。但我无法点击链接,并失败,但有以下例外。 WebDriverException:在点(198,139)不能单击元素。其他元素将收到click:...(警告:服务器没有提供