Selenium 如何单击具有隐藏属性的按钮
Selenium how to click a button with hidden attribute
我需要单击属于网格菜单一部分的按钮。它在网格中显示项目价格列,默认情况下它是隐藏的。
<button type="button" class="ui-grid-menu-item" ng-click="itemAction($event, title)" ng-show="itemShown()" ng-class="{ 'ui-grid-menu-item-active': active(), 'ui-grid-sr-only': (!focus && screenReaderOnly) }" aria-pressed="" tabindex="0" ng-focus="focus=true" ng-blur="focus=false" aria-hidden="true"><i ng-class="icon" aria-hidden="true" class="ui-grid-icon-ok"> </i> Item Price</button>
我采取了一种方法,首先通过设置 aria-hidden="false" 来显示它。
IJavaScriptExecutor js = (IJavaScriptExecutor)(_chromeDriver);
js.ExecuteScript("document.getElementByXPath('//*[@id='menuitem-5']/button').setAttribute('aria-hidden', 'false')");
但是我遇到 javascript 错误。
javascript error: missing ) after argument list
(Session info: chrome=81.0.4044.138)
我也检查了这个答案
但是还没有解决办法。
我该如何解决?我的做法对还是应该改变?
您可以使用javascript直接点击元素
IWebElement element = _chromeDriver.FindElement(By.XPath("//*[@id='menuitem-5']/button"));
js.ExecuteScript("arguments[0].click();", element);
我认为您看到的错误来自这一行:
IJavaScriptExecutor js = (IJavaScriptExecutor)(_chromeDriver);
改成这样:
IJavaScriptExecutor js = ((IJavaScriptExecutor)_chromeDriver);
我需要单击属于网格菜单一部分的按钮。它在网格中显示项目价格列,默认情况下它是隐藏的。
<button type="button" class="ui-grid-menu-item" ng-click="itemAction($event, title)" ng-show="itemShown()" ng-class="{ 'ui-grid-menu-item-active': active(), 'ui-grid-sr-only': (!focus && screenReaderOnly) }" aria-pressed="" tabindex="0" ng-focus="focus=true" ng-blur="focus=false" aria-hidden="true"><i ng-class="icon" aria-hidden="true" class="ui-grid-icon-ok"> </i> Item Price</button>
我采取了一种方法,首先通过设置 aria-hidden="false" 来显示它。
IJavaScriptExecutor js = (IJavaScriptExecutor)(_chromeDriver);
js.ExecuteScript("document.getElementByXPath('//*[@id='menuitem-5']/button').setAttribute('aria-hidden', 'false')");
但是我遇到 javascript 错误。
javascript error: missing ) after argument list
(Session info: chrome=81.0.4044.138)
我也检查了这个答案
但是还没有解决办法。 我该如何解决?我的做法对还是应该改变?
您可以使用javascript直接点击元素
IWebElement element = _chromeDriver.FindElement(By.XPath("//*[@id='menuitem-5']/button"));
js.ExecuteScript("arguments[0].click();", element);
我认为您看到的错误来自这一行:
IJavaScriptExecutor js = (IJavaScriptExecutor)(_chromeDriver);
改成这样:
IJavaScriptExecutor js = ((IJavaScriptExecutor)_chromeDriver);