Bus*_*ter 5 javascript c# selenium selenium-webdriver
我正在构建一个新的测试用例并且遇到了一个我不知道如何解决的新问题。我需要单击一个元素,该元素既是一个元素,visiblity: hidden又display: none或者至少需要一种方法来执行它调用的 javascript 函数。在传递中,我已经能够用来IJavascriptExecutor更改元素的可见性或显示,但是这个选项对于这个测试用例没有用,因为我正在处理我在运行时使用 `Driver.FindElements' 定位的元素数组,所以我无法得到使用我的旧方法更改显示的确切选择器。
IJavaScriptExecutor js = (IJavaScriptExecutor)Driver;
var script = String.Format("document.querySelector('{0}').style.display='inline-block';", selector);
js.ExecuteScript(script);
Run Code Online (Sandbox Code Playgroud)
附件是相关元素的 html 和 css 属性的屏幕截图。
在我看来,我有两个选项可以使这个测试不是动态的,并且可以在单个硬编码元素上执行功能(糟糕!),或者我可以弄清楚如何动态地执行此操作。所以我的希望(可能是愚蠢的希望)是我可以以某种方式调用绑定到此按钮的 onClick 事件,而无需实际单击它。
您可以提取onclick属性并将其作为参数发送。您也不需要使用IJavaScriptExecutor,IWebDriver扩展此接口,因此您只需调用ExecuteJavaScript方法
IWebElement buttonToClick;
string script = buttonToClick.GetAttribute("onclick");
driver.ExecuteJavaScript<object>(script);
Run Code Online (Sandbox Code Playgroud)
您也可以尝试使用 JavaScript 单击它
driver.ExecuteJavaScript<object>("arguments[0].click();", buttonToClick);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11411 次 |
| 最近记录: |