当前位置: 首页 > 知识库问答 >
问题:

如何使用Selenium将javascript文件加载到DOM中?

哈烨熠
2023-03-14

我使用Selenium WebDriver尝试将外部javascript文件插入到DOM中,而不是将整个文件输入到Executescript中。

它看起来像是正确地将节点放入了DOM,但它只是忽略了源,即源js文件上的函数不运行。

下面是我的代码:

import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;

public class Example  {
    public static void main(String[] args) {
        WebDriver driver = new FirefoxDriver();
        driver.get("http://google.com");
        JavascriptExecutor js = (JavascriptExecutor) driver;
        js.executeScript("document.getElementsByTagName('head')[0].innerHTML += '<script src=\"<PATH_TO_FILE>\" type=\"text/javascript\"></script>';");
    }
}

我链接到的javascript文件的代码是

alert("hi Nate");

我将js文件放在本地主机上,使用file:///调用它,并在外部服务器上进行了尝试。没有骰子。

我还尝试了这个解决方案,它显然是为另一个版本的Selenium(而不是webdriver)设计的,因此根本不起作用:在Selenium中加载一个包含有用测试函数的外部js文件

共有1个答案

邓英卓
2023-03-14

根据以下内容:http://docs.seleniumhq.org/docs/appendix_migrating_from_rc_to_webdriver.jsp

您可能正在使用browserbot获取当前窗口或测试文档的句柄。幸运的是,WebDriver总是在当前窗口的上下文中评估JS,所以您可以直接使用“window”或“document”。

或者,您可以使用browserbot来定位元素。在WebDriver中,这样做的习惯用法是首先定位元素,然后将其作为参数传递给JavaScript。因此:

那么下面的工作在WebDriver中吗?

WebDriver driver = new FirefoxDriver();
((JavascriptExecutor) driver)
  .executeScript("var s=window.document.createElement('script');\
  s.src='somescript.js';\
  window.document.head.appendChild(s);");
 类似资料:
  • 问题内容: 我正在使用Selenium WebDriver尝试将外部javascript文件插入DOM中,而不是将整个内容键入到executeScript中。 看起来好像已将节点正确放置到DOM中,但是随后它只是忽略了源代码,即,所述源js文件上的函数未运行。 这是我的代码: 我链接到的javascript文件的代码是 我已将js文件放在本地主机上,使用file:///进行了调用,并在外部服务器上

  • 我想加载(要求)一个包含json模式的文件夹,这些模式具有基于其文件的引用。 换句话说,我有 并在同一文件夹中的另一个文件中: 这些模式在sperate文件中,现在应该加载到JS中,以便针对json对象进行验证。但是,文件夹内的引用应该仍然有效。 这就是为什么我的问题是,是否以及如何能够加载一个装满json文件的文件夹,而不需要中断引用。 这个库将使用这些模式来验证json对象:https://g

  • 问题内容: 是否可以使用Javascript将CSS样式表导入html页面?如果是这样,怎么办? 附言:JavaScript将托管在我的网站上,但我希望用户能够放入其网站的标签,并且它应该能够将托管在我的服务器上的CSS文件导入当前网页。(css文件和javascript文件都将托管在我的服务器上)。 问题答案: 这是这样做的“老派”方法,希望可以在所有浏览器上使用。从理论上讲,不幸的是,您将使用

  • 问题内容: 我试图用BottlePy返回一个html模板。这很好。但是,如果我在tpl文件中插入这样的javascript文件: 我收到404错误。 (无法加载资源:服务器响应状态为404(未找到)) 有谁知道如何解决这个问题? 这是我的脚本文件: 那就是模板文件,位于“ ./views”子文件夹中。 也许是开发服务器在其中查找我的js文件的“ rootPath / js / main.js”?

  • 问题内容: 我正在尝试从外部文件加载HTML并将文件的内容插入。 当我运行该函数时,它将HTML插入所有正文中,这是不够的。 我的代码: --------------------------> HTML <--------------------- ----- --------------------------> CSS <--------------------- ----- --------

  • 问题内容: 我正在尝试获取下载链接并下载文件。 我有一个包含以下链接的日志文件: 我有这样的代码: 到目前为止,我不知道如何获取下载链接并下载它。可以使用selenium下载文件吗? 问题答案: 根据文档,您应该配置为自动下载具有指定内容类型的文件。这是在txt文件中使用第一个URL的示例,该文件将文件保存在当前目录中: 注意,我也简化了xpath。