[英]Selenium WebDriver IEDriverServer Click Link Javascript doPostBack
我正在測試一個 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。
有沒有其他解決方案,因為我有很多這樣的鏈接來修改代碼:( :( :(
================================================== ====================== 17 年 1 月 22 日更新了更多截圖和細節。 我目前無法訪問實際的應用程序代碼,但如果這還不夠,我可以請求訪問。
這是我的測試代碼,用於查找單擊鏈接(沒什么特別的):
當我調試這段代碼時,我可以看到鏈接被找到並成功點擊(沒有例外)。 屏幕上還有一條虛線環繞所述鏈接。 此代碼適用於 Firefox,因此元素本身沒有問題。 但是,在 Firefox 中,在 Click() 操作之后,屏幕會按預期重新加載。 在 IE11 中,除了虛線之外什么也沒有發生。
我為IE添加了以下代碼,在調用這個ExcecuteScript方法后,頁面加載了預期的結果。
我用一個小的 ASP.NET 示例進行了嘗試,它似乎也適用於 Selenium 和 IE。 你能更具體地說明你的 pgae 是什么樣的嗎?
這是我嘗試過的:
<div>
<asp:LinkButton runat="server" OnClick="Unnamed_Click" ID="one">test link button</asp:LinkButton>
<asp:Label runat="server" ID="label"></asp:Label>
</div>
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。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.