【问题标题】:My Asp.Net Form data is not being submitted properly by Selenium 2 (Webdriver)Selenium 2 (Webdriver) 未正确提交我的 Asp.Net 表单数据
【发布时间】:2011-11-03 21:53:12
【问题描述】:

所以我编写了一个测试,它填充一个表单,保存(在管理工具中),然后发布。

但是,我的表单在保存点击和发布点击之间丢失了。我会展示表单在 HTML 中的样子,但它非常庞大(如 20-30 个字段)

在伪代码中,填写表单如下所示:

1) 使用下拉菜单填写表格 2) 点击保存按钮 - 保存所有表单数据 3) 点击发布按钮

当我暂停脚本以查看 selenium 中发生了什么时,我看到表单已正确填充。然后我看到正确单击了“保存”按钮。当我在点击发布前暂停屏幕时,我看到点击保存按钮后保存的内容丢失或位于错误的字段中。

当我手动执行此操作时,它可以正常工作。我知道 selenium 提交表单的方式与标准用户不同,但是,我能做些什么来确保正确提交表单吗?

【问题讨论】:

    标签: webforms selenium-webdriver


    【解决方案1】:

    Save 按钮的实际作用是什么?是 Javascript 还是简单的 ` 按钮?

    您是否使用 C# 接口连接到 Selenium webdriver?您可能有如下代码:

    FillInForm();
    selenium.click(By.CssSelector("input[value='Save']"));
    selenium.click(By.CssSelector("input[value='Publish']"));
    

    您是否尝试过在savepublish 之间插入如下行:

    // further up: By saveButton = ...
    // By formField = ...
    
    selenium.click(saveButton);
    var formField = selenium.FindElement(formField);
    Assert.That(formField.GetAttribute("value")
        .contains("The text you typed into the form")
    );
    

    这里的重点是检查save 是否真的按照锡上所说的那样做。通常,当您要求 WebDriver “单击”按钮时,它确实(或多或少地)完成了用户所做的事情。或者,您可以注入一些 javascript 来强制提交表单 - 但是您明确测试用户实际做了什么(但您可能会发现它更接近您的体验)。

    【讨论】:

    • 您好 Jelford,感谢您的反馈。让我回答你的问题。 1) 它不是标准按钮,它实际上是一个带有 href="#Save" 的“a”标签。 2)我在上面的例子中检查了值属性。单击保存后它们是不同的(它们没有价值)所以我知道保存单击并不能完全模拟用户会做什么。我曾考虑过使用 javascript 来强制提交正确的表单,但不确定我需要调用什么。我应该去 myUrl.com/#Save 吗?
    • 我的错误。它不是 href=#Save,它是一个输入标签。所以可能是一个普通的按钮?不确定标准按钮标签是什么。
    • 我还想提一下,并非所有字段都被弄乱了。在表单中的 20-30 个字段中,只有 2 个字段在保存和发布之间丢失。
    • 抱歉回复慢。一个普通的按钮提交按钮看起来像<input type="submit" />。标准(非javascripty)按钮将位于<form> 元素内的某个位置,该元素应具有关联的action 属性(如果没有,则默认为页面所在的URI)。尝试向表单提交的任何地方(action)发送 POST 请求(使用 CURL)或其他内容,看看会发生什么。
    • 另外要检查的是:如果您的页面确实依赖Javascript才能正常工作,那么您必须使用支持JS的WebDriver客户端;具体来说,HTMLUnit 驱动程序(Selenium 附带的最基本、最快的驱动程序)支持 JS。如果您正在使用例如Firefox 或 Chrome 驱动程序,那么这也不是问题。
    猜你喜欢
    • 2018-02-10
    • 1970-01-01
    • 2016-05-03
    • 2015-11-24
    • 2020-01-12
    • 2019-08-31
    • 2017-12-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多