我正在测试一个 ASP.NET 应用程序,该应用程序有很多在其 href 中调用 Javascript doPostBack 的链接,如下所示:
href="javascript:__doPostBack('ctl04$ctl06$Entities','Impersonate$12345')"
Selenium WebDriver element.Click() 方法仅适用于 Firefox。对于 IEDriverServer,单击链接后没有任何反应。
我开始用谷歌搜索,看起来 Javascript 操作实际上并没有用 Click() 方法调用,我能找到的唯一建议是像这样使用 IJavaScriptExecutor(这行得通):
var js = Globals.Driver as IJavaScriptExecutor;
js?.ExecuteScript($"javascript:__doPostBack('ctl04$ctl06$Entities','Impersonate$12345')");
这发生在 Windows 7 和 Windows 8.1 上的 IE11 上。我还没有尝试过 Windows 10。
有没有其他解决方案,因为我有很多这样的链接来修改代码:( :( :(
==================================================== ====================== 2017 年 1 月 22 日更新,包含更多屏幕截图和详细信息。我目前无权访问实际的应用程序代码,但如果这还不够,我可以请求访问。
这是我找到点击链接的测试代码(没什么花哨的):
当我通过此代码进行调试时,我可以看到链接已找到并成功单击(无异常)。屏幕上还有一条虚线环绕着所述链接。此代码在 Firefox 中有效,因此元素本身没有任何问题。但是,在 Firefox 中,在 Click() 操作之后,屏幕会按预期重新加载。在 IE11 中,除了那条虚线之外什么都没有发生。
我为 IE 添加了以下代码,调用了这个 ExeccuteScript 方法后,页面加载了预期的结果。