繁体   English   中英

Selenium Click()不适用于ASP.NET LinkBut​​ton

[英]Selenium Click() does not work with ASP.NET LinkButton

我正在为ASPX页面编写Selenium文本案例。 我想单击此ASP.NET asp:LinkButton元素:

<asp:LinkButton runat="server" OnClick="Test_Click" Text="Just try to click me" ID="testtest123"></asp:LinkButton>

在.NET生成的HTML页面中显示如下:

<a id="testtest123" href="javascript:__doPostBack(&#39;testtest123&#39;,&#39;&#39;)">Just try to click me</a>

但是,尽管Selenium可以毫无困难地找到元素,但Click()却什么也没做。 我没有遗漏任何异常或超时的元素,测试用例仅在点击正确触发的情况下运行。

这是单击元素的简单行;

Browser.Driver.FindElement(By.Id("testtest123")).Click();

此代码可以与其他ASP元素(例如按钮和文本框)配合使用。 我使用C#使用64位Webdriver和IE 11编写测试用例。

我在这里研究了解决方案: ASP.Net LinkBut​​ton防止回发不起作用-JavaScript,但它们似乎不适用于我的情况:

任何帮助将不胜感激!

编辑:我在此网站上发布了关于此问题的另一个主题: https : //code.google.com/p/selenium/issues/detail?id=7846&can=8&colspec= ID%20Stars%20Type%20Status%20Priority%20Milestone% 20Owner %20摘要

我遇到了类似的问题,其中某些控件被渲染为预期的,而另一些则没有,因此您确定链接ID为“ testtest123”吗?

您必须将“ 客户端ID模式”设置为静态,以使HTML ID与.NET中的ID相同(默认值是“继承”,但在web.config中通常将其设置为“自动ID”)。

<asp:LinkButton runat="server" OnClick="Test_Click" Text="Just try to click me" ID="testtest123" ClientIDMode ="Static"></asp:LinkButton>

如果渲染的HTML实际上是<A id=testtest123则这是无效的HTML,因为该属性在该值周围没有引号。 如果这是实际值,那么问题比硒更严重。

一种可能是硒正确地单击了元素,但是在其余测试中,linkbutton的javascript代码执行得不够快。 这是因为当selenium遇到<input type="submit">标记(如asp.net按钮控件)时,它知道它必须等待表单提交才能进入下一个测试步骤。 但是,linkbutton只是一个<a>标记,更糟糕的是,它具有javascript作为href而不是url。 因此,回发javascript可能需要50毫秒的时间执行或执行任何操作,在这种情况下,可能会进行如下测试:

步骤n:单击链接按钮-硒不知道需要多长时间,因此进入下一步

第n + 1步:单击某个按钮-如果这是在JS完成执行之前发生的,则好像第n步根本没有发生

在硒的情况下,这是合理的,因为它以程序的速度运行,而人类测试人员永远无法足够快地单击下一步以引起此类问题。 解决此问题的方法是添加延迟步骤,或者在单击链接按钮时设置的javascript变量上添加监视步骤。

编辑:

好的,所以这不是问题。 我几乎肯定它与href中的javascript有关,因此您可以在这里尝试答案吗: https : //stackoverflow.com/a/18847713/1981387

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM