- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在测试一个 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 日更新,提供更多屏幕截图和详细信息。我目前无权访问实际的应用程序代码,但如果这还不够,我可以请求访问权限。
这是我的测试代码,用于查找单击链接(没什么花哨的):
当我调试此代码时,我可以看到链接已找到并成功单击(没有异常(exception))。屏幕上还有一条虚线围绕着所述链接。这段代码可以在 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。
关于javascript - Selenium WebDriver IEDriverServer 单击链接 Javascript doPostBack,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41772075/
我尝试通过单击按钮进行回发。但无法获取 __EVENTTARGET 和 __EVENTARGUMENT。目前它始终为空。我还需要做任何其他条目吗? aspx function
我有一个 ASP.NET 控件,它有一个在元素上内联呈现的 onclick 事件处理程序。我想调用该函数并让它引发目标控件的服务器端事件处理程序。 Test 我创建了复选框,查看了字段上呈现的函数
我正在将 ASP.NET 网络应用程序中的一些现有 JavaScript 迁移到 Typescript,并在 JavaScript 中遇到以下行: __doPostBack('ccm$ctl00$_C
我正在将 ASP.NET 网络应用程序中的一些现有 JavaScript 迁移到 Typescript,并在 JavaScript 中遇到以下行: __doPostBack('ccm$ctl00$_C
我有一个页面,点击一个按钮,一个 javascript 函数就会运行。然后它聚合一些数据并将数据放在该页面的隐藏字段中。然后它会打开一个新窗口。这个新窗口像这样获取这些聚合数据:- $('#accep
我想从网站下面定期提取一个表格。 单击构建块名称(BLOK 16 A, BLOK 16 B, BLOK 16 C, ...)时,价格表会发生变化。 URL 不改变,页面通过触发改变 javascrip
每当我的 vb.net 页面触发“doPostBack”事件(导致 .net session 变量更新)时,我都会尝试更新 JavaScript 变量。 我尝试添加此内容,但不起作用。 va
我正在尝试抓取this page下载 Excel 格式的文件。 enter image description here到目前为止我一直在尝试这个,但它对我没有帮助: library(rvest)
在Asp.Net中_doPostBack和DoPostBackWithOptions有什么区别,在什么场景下会使用_doPostback和DoPostBackWithOptions? 最佳答案 DoP
我的问题是当我选择任何单选按钮列表时,模态窗口将关闭。我使用 javascript 更改事件然后回发 asp rbl Controller 。 实际上,我的全部代码都在更新面板中。请告诉我防止此问题的
我正在为我的公司编写一个网络浏览器。为此,我们的客户允许我们访问他们的网站,但客户的 IT 团队不与我们沟通,因此我必须在没有来源帮助的情况下完成该程序。 他们的网站在所有按钮/下拉菜单上使用 Jav
您好,我有一个打开弹出窗口的父页面,用户在子弹出页面上进行一些更改,然后单击保存按钮。当用户点击保存按钮时,我想做 PostBack 到父页面,以便在弹出窗口中所做的更改可以在父窗口中看到。 问题:如
我正在测试一个 ASP.NET 应用程序,该应用程序有很多在其 href 中调用 Javascript doPostBack 的链接,如下所示: href="javascript:__doPostBa
tldr; 我试图覆盖服务器所需的隐藏字段以返回一个新的地理缓存页面失败(__EVENTTARGET 属性),因此服务器返回一个空页面. Ps:我的原始帖子因投票放弃而关闭,所以我在对第一篇帖子进行大
我想在我的链接中使用 doPostBack 函数。当用户点击它时,它不会重定向到另一个页面,页面将被回发。我正在使用这段代码,但它不起作用。我错过了什么地方? function __doPostB
我在Panel内有一个radioButtonList。该面板使用 UpdatePanel 更新其面板。 更新面板每 5 秒刷新一次
我在 Windows 8.1 预览版的 IE 11 中得到空白页。检查页面后,我假设以下代码可能是罪魁祸首,因为在这些行之后没有进一步的行显示调试器窗口,所以代码在这一行之后中断. IE 11 /
我有一个非常有趣的问题。我们有一个使用 sharepoint 2013 创建的站点。我们使用 Windows - NTLM 身份验证。 在包含自定义讨论列表WebPart 的页面中,我们有一个过滤器按
我是一名优秀的程序员,十分优秀!