我正在测试一个ASP.NET应用程序,它有很多链接,它们在href中调用Javascript doPostBack,如下所示:
href="javascript:__doPostBack('ctl04$ctl06$Entities','Impersonate$12345')"Selenium WebDriver element.Click()方法仅适用于Firefox。对于IEDriverServer,点击链接后什么都不会发生。
我开始在Googling上搜索,看起来Javascript操作实际上不是用Click()方法调用的,我能找到的唯一建议就是像这样使用IJavaScriptExecutor (这很有效):
var js = Globals.Driver as IJavaScriptExecutor;
js?.ExecuteScript($"javascript:__doPostBack('ctl04$ctl06$Entities','Impersonate$12345')");这种情况发生在Windows7和Windows8.1的IE11上。我还没试过Windows 10。
还有其他的解决方案吗?因为我有这么多这样的链接来修改代码:(:
========================================================================更新了01/22/17和更多的截图和细节。我目前无法访问实际的应用程序代码,但是如果这还不够,我可以请求访问。。
这是我试图单击的链接的HTML代码:

这是我的测试代码,可以找到一个点击链接(没什么特别的):

当我通过这段代码进行调试时,我可以看到找到并成功地单击了链接(没有异常)。所述屏幕还具有围绕所述链接的虚线。这段代码适用于Firefox,因此元素本身没有什么问题。但是,在Firefox中,在Click()操作之后,将按预期重新加载屏幕。在IE11中,除了虚线之外,什么都不会发生。


我为IE添加了以下代码,在调用此ExcecuteScript方法之后,页面将加载预期的结果。

至于它的价值,这是得到的页面,应该加载后,该链接被点击。

发布于 2017-01-21 16:29:40
我用一个小的ASP.NET示例尝试了这一点,它似乎也适用于Selenium和IE。你能对你的长相更具体些吗?
以下是我尝试过的:
WebForm1.aspx
<div>
<asp:LinkButton runat="server" OnClick="Unnamed_Click" ID="one">test link button</asp:LinkButton>
<asp:Label runat="server" ID="label"></asp:Label>
</div>WebForm1.aspx.cs
protected void Unnamed_Click(object sender, EventArgs e) {
label.Text += "Clicked";
}生成的HTML如下所示:
<a id="one" href="javascript:__doPostBack('one','')">test link button</a>下面是一个测试:
driver.get("http://localhost:41058/WebForm1.aspx");
new WebDriverWait(driver, 1).until(ExpectedConditions.elementToBeClickable(By.id("one"))).click();
new WebDriverWait(driver, 1).until(ExpectedConditions.elementToBeClickable(By.id("one"))).click();
new WebDriverWait(driver, 1).until(ExpectedConditions.elementToBeClickable(By.id("one"))).click();这与ChromeDriver和InternetExplorerDriver (在Windows 10上使用IE11 )的预期效果一样。
然而,也有一些缺陷:
__doPostBack调用实际上将在浏览器中重新加载页面,因此不能使用以前缓存的WebElement引用。换句话说,这是行不通的:
WebElement element = driver.findElement(By.id("one"));
element.click();
element.click();因为第二个element.click()将产生一个StaleElementException。
https://stackoverflow.com/questions/41772075
复制相似问题