【问题标题】:JQuery script for iframe is not working with Selenium3iframe 的 JQuery 脚本不适用于 Selenium3
【发布时间】:2019-04-23 04:06:12
【问题描述】:

我创建了一个可在浏览器控制台中运行的 JQuery 脚本,但它不适用于 selenium3 自动化。我收到的例外是unknown error: $ is not defined。我读到问题是选择器中的第二个参数。我试图转义 $ 字符,但它不起作用。

这是我在浏览器控制台中执行的脚本:

$('input[type=file]', $('#fonto').contents()).css('display','block')

但是当我在我的测试用例中执行时,它不起作用。这是代码行:

((JavascriptExecutor) getDriver()).executeScript("$('input[type=file]', 
$('#fonto').contents()).css('display','block')");

我需要第二个参数,因为输入在 iframe 内。

firefox 和 chrome 浏览器都会出现这个问题。

执行此脚本的正确方法是什么?

编辑 未加载 JQuery。在执行我的脚本之前,我需要知道如何启用 JQuery。

【问题讨论】:

    标签: javascript jquery selenium selenium3


    【解决方案1】:

    首先你应该切换到 iframe。 比像这样包含 jquery:

                browser.SwitchTo().Frame("your_iframe");
                var jqueryLoad = "if (typeof(jQuery) == 'undefined')";
                jqueryLoad += "{";
                jqueryLoad += "var iframeBody = document.getElementsByTagName('body')[0];";
                jqueryLoad += "var jQuery = function(selector) { return parent.jQuery(selector, iframeBody); };";
                jqueryLoad += "var $ = jQuery;";
                jqueryLoad += "}";
    
                IJavaScriptExecutor jsExe = browser as IJavaScriptExecutor;
                jsExe.ExecuteScript(jqueryLoad);
    
                jsExe.ExecuteScript("Your jquery code here !");
    

    您现在可以执行您的 jquery 代码。如果你有嵌套的 iframe,你应该重新配置代码。

    【讨论】:

    • 感谢您的帮助,但它对我不起作用。
    【解决方案2】:

    我终于解决了这个问题,但我有两种不同的方法:

    1. 遵循link 中的第 2 点。这意味着将一个新文件添加到您的项目中,它有一个非常有用的示例来检查它是否启用。在这种情况下,脚本应该删除 iframe 部分,因为我们已经进入 iframe。像这样$('input[type=file]').css('display','block')
    2. 问题是 iframe 没有激活 JQuery,但主要内容,默认框架,激活了 JQuery。然后我可以将当​​前帧更改为默认帧,使用 iframe 选择器 ($('input[type=file]', $('#fonto').contents()).css('display','block')) 执行完整脚本。然后返回 iframe。

    我的选择,因为我有很多执行脚本的项目,所以我会遵循第二个。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-25
      • 2016-04-23
      • 1970-01-01
      • 2018-08-12
      相关资源
      最近更新 更多