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

在Java中执行JavaScript-打开URL并获取链接

冀阳文
2023-03-14
问题内容
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import java.io.FileReader;

public class Main {

    public static void main(String[] args) {

        ScriptEngineManager manager = new ScriptEngineManager();
        ScriptEngine engine = manager.getEngineByName("js");
        try {
            FileReader reader = new FileReader("C:/yourfile.js");
            engine.put("urlfromjava", "http://www.something.com/?asvb");
            engine.eval(reader);
            reader.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

现在,yourfile.js包含以下行

function urlget(url)
{
    print("URL:"+url);
    var loc = window.open(url);
    var link = document.getElementsByTagName('a')["61"].href;
    return ("\nLink is: \n"+link);

}
var x = urlget(urlfromjava);
print(x);

我得到了错误

"javax.script.ScriptException: sun.org.mozilla.javascript.internal.EcmaError: ReferenceError: "window" is not defined"

如何打开URL并从Java获取其链接?


问题答案:

根据文档:

窗口对象代表浏览器中打开的窗口。

由于您没有在浏览器中执行脚本,因此未定义窗口对象。

您可以使用URL /
URLConnecion类读取URL,并将其提供给ScriptEngine。这里有一个教程。



 类似资料:
  • 我喜欢什么:进入网页,点击一个链接,在一个新的标签打开。确认新选项卡的URL。 我在cucumber/selenium/java中这样做。 这是我的小cucumber 我点击链接的代码: 和代码,我已经尝试从新标签获取URL。我在这里挣扎。我所尝试的一切都会打开一个新的标签,然后屏幕变为空白并显示数据;在URL中,或者它将打开一个新的标签在一个已经这样做的顶部。我知道我不是真的在正确的轨道上。这只

  • 我正在尝试使用JSF和PrimeFaces开发一个计费应用程序。基本功能需要向账单中添加几个项目,并在账单完成后单击“更新”按钮。打印的票据必须包括诸如BillId之类的细节,BillId是在backing bean settleBill方法结束时生成的。它需要在一页中完成,以便打印后,应用程序可以准备新的账单。 我开发了如下,但打印和执行该方法并没有按预期进行。 当我在没有Ajax的情况下使用时

  • 我最近开始使用php和mysql数据库构建一个登录系统。现在,我已经使用php代码和用户在引导模式中键入的数据构建了这个功能。 用户打开自己的邮箱,点击数据库中执行验证脚本的链接,将用户设置为已验证,并加载我的主站点页面。 之后,我想添加一些模态,告诉一些像“您的帐户已验证”只是一次。什么是正确的方法?我以为php可以通过运行位于中的jquery函数来完成 但正如我所看到的那样,这是不正确的,ph

  • 问题内容: 我正在使用Groovy在我的Linux机器上执行命令并返回输出,但是我无法以某种方式使用管道(我认为),或者它可能没有在等待命令完成。 有什么问题或我的代码中缺少什么? 我的调用函数: 文件内容(更新:添加了exitVal println): 我的输出(更新:添加了exitVal值): 注意:我在内部使用。 问题答案: 您不能使用进行管道或重定向。这在Java中不起作用,因此在Groo

  • 问题内容: 我正在创建一个“共享按钮”以共享当前页面。我想获取当前页面的URL并在新窗口中打开它。我有当前的URL部分,但似乎无法使下一部分工作。 我在语法上苦苦挣扎。我想将新窗口的大小指定为。 就像是: 有任何想法吗? 问题答案: 用途: 这将创建一个标题为链接的链接,该链接将在一个新窗口中打开一个高度为570,宽度为520的新网址。

  • 问题内容: 我们正在为bigquery编写一个开源jdbc驱动程序,并遇到以下问题: 我们希望使用Oauth 2授权我们的驱动程序为已安装的应用程序。在Windows XP,Windows 7 X64,Windows 7 X64 + RDP上运行正常。但是在作为Windows Server 2008 R2 + RDP的测试台上,它失败了。 基本上,我们打开一个网络浏览器,他登录,我们捕获回复并验证