- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
什么是 Selenium WebDriver 中的 JavaScript 执行器?
它有什么用,我们如何在 Selenium WebDriver 中使用它?
一个例子将不胜感激。
最佳答案
JavascriptExecutor是 Selenium 接口(interface),它由以下所有类实现:
FirefoxDriver
ChromeDriver
InternetExplorerDriver
EdgeDriver
OperaDriver
SafariDriver
RemoteWebDriver
EventFiringWebDriver
HtmlUnitDriver
当您有时由于跨域策略执行您的 Selenium 脚本时,浏览器强制执行您的脚本可能会意外失败并且没有足够的错误日志记录。这在创建您自己的 XHR 请求或尝试访问另一个框架时尤为重要。
JavascriptExecutor接口(interface)提供了如下两个方法:
executeScript()
:此方法在当前选定的框架或窗口的上下文中执行 JavaScript。提供的脚本片段将作为匿名函数的主体执行。在脚本中,您需要使用 document
来引用当前文档。请注意,一旦脚本执行完毕,局部变量将不可用,但全局变量将持续存在。
executeAsyncScript()
:此方法在当前选定的框架或窗口的上下文中执行一段异步的 JavaScript。与执行同步 JavaScript 不同,使用此方法执行的脚本必须通过调用提供的回调来明确表示它们已完成。此回调始终作为最后一个参数注入(inject)到已执行的函数中。
几个例子:
String js = "arguments[0].setAttribute('value','"+inputText+"')"
((JavascriptExecutor) webDriver).executeScript(js, element);
Double click through JavaScript
new Actions(driver).moveToElement(myElem, posX, posY).perform();
((JavascriptExecutor)driver).executeScript(jsDoubleClick, myElem, posX, posY);
Sending variable character strings through executeScript()
String myValue = "80120804076";
WebElement pesel = driver.findElement(fldPesel);
jse.executeScript("arguments[0].value='" + myValue + "';", pesel);
您还可以在以下位置找到关于参数的一些详细讨论:
关于javascript - Selenium 中的 JavaScriptExecutor 是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52689880/
我在 Java 中使用 javascriptexecutor 和 selenium 并试图弄清楚网页是否可以检测到它? 使用Javascriptexecutor,似乎有一些javascript被注入(
我正在对 YouTube 视频进行自动化测试;以这个为例 - https://www.youtube.com/watch?v=AjWfY7SnMBI .我想向下滚动页面以检查评论是否加载。然而,Jav
我无法在页面上执行函数doFilterOffer(),这是以下错误missing; before 语句,下面这个语法有什么问题? if (driver instanceof Javascrip
我正在尝试使用 JavascriptExecutor 使用 XPath 查找文本元素。问题是文本有一个撇号,在这种情况下我不知道如何转义它。通常 \" 就足够了。你能帮我吗? 我已经尝试过以下选项:
下面是代码片段并出现错误,如下所示: The method executeScript(String, Object[]) in the type JavascriptExecutor is not
我想做鼠标悬停来在我的应用程序中执行某些任务。我通过使用 javascriptExecutor 做到了这一点。在进入我的应用程序之前,我尝试了一些开放的应用程序。下面是使用的代码 使用的代码 try{
抱歉,我无法将图片放入其中。因此,状态栏是浏览器左下角的小框,当您将鼠标悬停在网络元素上或页面加载时,它就会出现。 我尝试过以下方法: .getJavascriptExecutor().execute
我需要检查网站上是否有文字。根据driver.getPageSource() converts signs < to <我试图避免 getPageSource()。我需要在不同的文件中使用我的函
在 UI 上,我有一个 checkAll 按钮,它是作为 div block 下的跨度实现的。点击它变得很困难,所以我使用了 JavaScriptExcutor。我想点击两次。代码如下6行。第 3 行
我可能会遗漏一些东西,但在我检查过的每个示例中,JavascriptExecutor 接口(interface)都是通过添加来导入的 import org.openqa.selenium.Javasc
我尝试在 JavaScriptExecutor 上做一个例子。 测试站点是:http://www.anaesthetist.com/mnm/javascript/calc.htm 测试场景为:3+9=
下面是我的测试脚本。即使我正在滚动窗口,我也无法单击该元素。我也尝试使用显式等待。我收到 WebDriverException 消息说 Element is not clickable at poin
我在测试中使用selenium webdriver(JAVA),我有一个火灾事件方法,该方法应该可以重用,具体取决于传递给它的定位器。我的代码如下: public void fireEvent() {
我尝试在我的代码中使用 JavascriptExecutor,其中涉及传递 WebElement 并从中获取一些信息。我遇到了一些错误,所以我简化了它以找到问题。 String test = ((Ja
我正在尝试使用 Selenium WebDriver 中的 JavaScript 填写网页上的文本框。同事this github 在线存储库,用于填写文本框以加快速度。 当我运行该程序时,它会在 ((
嗨,当我们必须在 selenium webdriver (java) 中的 javascriptexecutor 的帮助下更改标签属性值时,我们可以像下面这样使用: JavascriptExecuto
我有一个元素列表,位于 Selenium 中,使用 By.CssSelector 方法: var contentRows = new List(); for (var i = 1; i tr:nth
所以我只是做了“如何使用 JavaScript 执行器方法处理隐藏的 Web 元素”。 但我仍然对这个方法感到困惑 public static void selectDateByJS(WebDrive
标题说明了一切,我需要一种选择 WebElement 的方法。 我正在使用 Firefox Quantum(最新测试版)。 这是我尝试过的。 String ccNumberSelector = "'#
给定一个网站,页面上有 AJAX 组件,我需要等到整个页面完全加载。 这是我使用 JavascriptExecutor 检查 document.readyState 的等待方法: public voi
我是一名优秀的程序员,十分优秀!