javascript - 如何使用 Selenium 执行网站脚本中定义的 JavaScript 函数?

标签 javascript python selenium selenium-webdriver

我正在使用一个网站,我需要使用 Selenium 运行一些 js 代码。为了让事情变得更容易,我需要运行网站脚本中声明的函数。
例如,该网站使用名为 document_handler.js 的脚本文件,其中包含以下代码:

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

在 Selenium 中,如果我运行:

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

我得到:

selenium.common.exceptions.WebDriverException: Message: getConversationId is not defined

如果我运行:

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

我得到:

selenium.common.exceptions.WebDriverException: Message: $.getConversationId is not a function

如何加载网站 javascript 文件,以便我可以在 Selenium 中使用其功能?或者我的代码有问题?

最佳答案

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

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

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

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

关于javascript - 如何使用 Selenium 执行网站脚本中定义的 JavaScript 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38315819/

相关文章:

javascript - 滚动导航链接的样式

python - 使用列表索引多级时保留顺序

python - 使用具有默认值的列将数据框复制到 postgres 表

java - 如何并行运行java for循环?

java - 无法从 excel 单元格中获取数值

javascript - jQuery 错误 : replaceWIth/html mangles my DOM (all tags go out of form tag)

Javascript:自调用单例函数与创建函数实例?

javascript - for 元素循环的执行时间比内部 AJAX 调用的响应速度要快

python - 在不预定义要使用的字符串数的情况下在 Pandas 中搜索多个字符串

Java - 如何使用 JavaScriptExecutor 调用字符串内的变量?