Selenium如何单击具有隐藏属性的按钮

问题描述 投票:0回答:1

我需要单击作为网格菜单一部分的按钮。它显示网格中的项目价格列,默认情况下它是隐藏的。

<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 &amp;&amp; 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">&nbsp;</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)

我也检查了这个答案

Selenium EventFiringWebDriver JavaScript: SyntaxError: missing ) after argument list

但是还没有解决方案。我该如何解决?我的方法正确还是应该改变。?

javascript c# selenium hidden
1个回答
0
投票

您可以使用javascript直接单击元素

js.ExecuteScript("document.getElementByXPath('//*[@id='menuitem-5']/button').click();");

我认为您看到的错误来自此行:

IJavaScriptExecutor js = (IJavaScriptExecutor)(_chromeDriver);

将其更改为此:

IJavaScriptExecutor js = ((IJavaScriptExecutor)_chromeDriver);
© www.soinside.com 2019 - 2024. All rights reserved.