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

如何用Selenium执行网站脚本中定义的一个JavaScript函数?

夏侯瑞
2023-03-14

我正在处理一个网站,我需要用Selenium运行几个js代码。为了简化操作,我需要运行在网站脚本中声明的函数。
例如,网站使用一个名为document_handler.js的脚本文件,其中包含以下代码:

 (function ($) {
     var getConversationId = function(){
         return $('input[name="conversationId"]').val()
     };
 })(jQuery);
js_eval = driver.execute_script("return getConversationId()")

我得到:

Selenium.Common.Exceptions.WebDriverException:消息:未定义getConversationId

如果我跑:

js_eval = driver.execute_script("return $.getConversationId()")

共有1个答案

羊舌自强
2023-03-14

如果这是一个您可以访问的脚本,则必须使该函数可用于外部/全局范围。最简单的方法是将其分配给window对象,它应该可以工作。

(function ($) {
     window.getConversationId = function(){
         return $('input[name="conversationId"]').val()
     };
 })(jQuery);

或者是这样,这基本上是一样的..

var getConversationId;
(function ($) {
     getConversationId = function(){
         return $('input[name="conversationId"]').val()
     };
 })(jQuery);
 类似资料:
  • 我的一个朋友最近在网上发布了他的javascript游戏。你首先进入主页,然后点击一个按钮,把你带到游戏中。 当我检查元素时如下所示: 当有人点击这个时,计数器会递增,这样他就知道有多少人玩过了。他这样做只是为了练习,因为他实际上并不期望任何人能上场。 我想给他一个惊喜,让一个剧本不断地点击这个按钮,一遍又一遍地,让他觉得他有1000个剧本。(当我告诉他时,他会喜欢这个恶作剧的;) 有人知道这是否

  • 我对硒是个新手,这是我第一天学硒,所以请对我宽容点。 所以我想打印这个网站https://member.lazada.co.id/user/login的一个javascript变量。这是我目前为止的代码 在Chrome Developer Tools的Console选项卡上,如下所示: 我在使用Selenium WebDriver阅读JavaScript变量时发现了这个问题,但我根本不懂Java,

  • 问题内容: 我在javascript中有一个名为“ checkdata(code)”的函数,如您所见,该函数接受一个名为“ code”的参数来运行并返回一个15个字符的字符串。 因此,我发现了(并测试了)如何在javascript中调用无参数函数,但是我的问题是,当我调用checkdata(code)时,总是得到“无”返回值。到目前为止,这是我正在做的事情: 但是,正如我之前说的,我一直都没有打印

  • 我弄乱了检查元素,发现每次刷新页面时,网络元素都会重置。我开始研究如何你控制台片段和什么保存日志,但是没有成功,我找不到我在找什么。我尝试做的是使用以下代码将stackoverflow网站上的“乔布斯”更改为“你好”: 我将此保存为一个代码段,但是每次访问页面时都必须手动运行此代码段。这能自动完成吗? 谢谢

  • 问题内容: 我有一个使用PHP(Joomla)实现的系统。现在,客户希望集成一个SMS网关。不幸的是,SMS网关不支持PHP。它用Java编写,所有示例都用JAVA编写。 我应该将其包含在程序中并运行以下示例脚本。 据我所知,我可以使用PHP如下运行 如何在PHP中运行上述Java脚本?可能吗?有没有办法桥接PHP和JAVA?我想要的是在PHP中运行JAVA,否则我会说这两者之间进行通信。 问题答

  • 我有自己的网站,当我按下一个按钮,我想加载一个不属于我的网站(即Google.com)。当这个页面加载时,我想要执行一个脚本。 例如,单击my site上的按钮,加载Google.com并用从我的网站传递的脚本文件中的值预加载搜索栏。 如果我访问Google.com时打开developer console并输入命令,我就可以做到这一点,但是,我想自动化这一点,所以我的脚本将操作这个新页面的DOM元