【问题标题】:Ajax select list not working when IE is launch from WatiN从 WatiN 启动 IE 时,Ajax 选择列表不起作用
【发布时间】:2011-06-30 23:13:05
【问题描述】:

我遇到的这个问题甚至不是同步问题,我正在等待 Ajax 请求完成。我遇到了一个问题,即当 WaitN 启动 IE 时,ajax 帖子甚至没有被触发。这是我的脚本:

$(document).ready(function () {
    $("form select").change(function () {
        $(this).parents().filter("form").trigger("submit");
    });

    $("form#theForm").submit(function (event) {
        event.preventDefault();
        hijack(this, UpdateList, "html");
    });

    function hijack(form, callback, format) {
        $.ajax({
            url: form.action,
            type: form.method,
            dataType: format,
            data: $(form).serialize(),
            success: callback
        });
    }

    function UpdateList(result) {
        $("#results").html(result);
    }

这里是html:

 <% using (Html.BeginForm("ControllerName", "ActionName", FormMethod.Post, new { id="theForm" })) { %>
    <table width="100%">
        <tr>
            <td align="left">
               &nbsp;
            </td>
            <td align="right">
                Fiscal Year & Period: <%= Html.DropDownList("period", Model.FiscalPeriodSelectList)%>
            </td>
        </tr>
    </table>
    <% } %>

    <div id="results">
        <% Html.RenderPartial("Setup", Model.ViewModel); %>
    </div>

当在 selectList 中选择了不同的值时,绝对不会发生任何事情。在测试完成后,我什至让浏览器保持打开状态,以便我可以手动更改选择列表。仍然——没有任何反应。但是,当我通过 VS 运行应用程序时,选择列表上的 ajax 帖子完美运行。是不是我配置不正确?

编辑:重要的是要注意我使用基本身份验证登录,无论是在我手动运行 mvc 应用程序时还是在 NUnit 运行它时。经过进一步检查,我意识到除了 AJAX 回调之外的所有内容都在执行,当我在“警报”中捕获 AJAX 错误时,我被显示为“未经授权”。我仍然不确定如何解决我的问题以及为什么当我从 NUnit 运行我的 WatiN 测试时我会得到未经授权,但是当我手动使用 mvc 应用程序时我没有得到它。

【问题讨论】:

  • 当您不在 VS 引擎的 localhost:port 下运行时,您确定您的 JQuery 路径和任何其他脚本都可以工作吗?含义 - 您的测试站点是在子目录中还是导致您的 JS 文件无法正确加载的东西?
  • 脚本文件的目录似乎一切正常。
  • 好吧,我的意思是你在 head 标签中的路径比你的脚本部署更重要。作为测试,有一个 alert('hi'); $(document).ready(function ()) 函数中的语句。有用吗?
  • 确实如此,但它会在大约 1 秒后自行消失。
  • 实际上,当 WatiN 首次打开页面时,不会显示警报。如果我在测试完成后保持页面运行(并且失败),然后手动转到页面,警报会显示,但它会自行消失(这可能与 WatiN 启动浏览器有关)

标签: asp.net-mvc ajax jquery watin


【解决方案1】:

我注意到在 Watin 中运行测试时,页面上通常会出现 javascript 错误。有人告诉我这是因为我们没有等待页面加载 JS 文件。

您是否在浏览器的状态栏中看到 JS 错误?如果是这样,您可能希望延迟您尝试与浏览器执行的交互。这样我们就可以加载 JS 文件,希望您的问题应该得到解决。让我们知道怎么回事。干杯。

【讨论】:

  • 感谢您的回复。我在状态栏中没有看到 JS 错误。但是,我在测试中使用基本身份验证,所以我想知道它是否与此有关。我之前提到过,如果我捕获 AJAX 错误,它会给我“未经授权”
猜你喜欢
  • 2016-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-27
  • 1970-01-01
  • 1970-01-01
  • 2011-02-27
  • 2016-09-09
相关资源
最近更新 更多