我有下面这样一个按钮。我不知道如何抓住它的文本,这是搜索。这个页面上有许多按钮。
<button _ngcontent-dqg-c23="" class="cp-mat-small-btn mat-flat-button mat-accent" color="accent" mat-flat-button="" ng-reflect-disabled="false" ng-reflect-color="accent"><span class="mat-button-wrapper">
Search
</span><div class="mat-button-ripple mat-ripple" matripple="" ng-reflect-centered="false" ng-reflect-disabled="false" ng-reflect-trigger="[object HTMLButtonElement]"></div><div class="mat-button-focus-overlay"></div></button>
我试过:
WebElement searchBtn = webDriver.find_element_by_xpath('//button[text()="Search"]');
但是得到错误:
| > Task :compileTestJava
gauge_1 | /tipu/src/test/java/CalmImplementation.java:16: error: unclosed character literal
gauge_1 | WebElement searchBtn = webDriver.find_element_by_xpath('//button[normalize-space()="Search"]');
gauge_1 | ^
gauge_1 | /tipu/src/test/java/CalmImplementation.java.java:16: error: unclosed character literal
gauge_1 | WebElement searchBtn = webDriver.find_element_by_xpath('//button[normalize-space()="Search"]');
gauge_1 | ^
gauge_1 | /tipu/src/test/java/CalmImplementation.java.java:16: error: not a statement
gauge_1 | WebElement searchBtn = webDriver.find_element_by_xpath('//button[normalize-space()="Search"]');
gauge_1 | ^
gauge_1 | 3 errors
gauge_1 |
2条答案
按热度按时间envsm3lx1#
find_element_by_xpath()
在使用selenium的java客户端时不是有效的方法。同样,以文本作为搜索的webelement在子元素中
<span>
它的父母<button>
还有一个角元素。因此,要通过文本识别元素,即搜索,您需要为
elementToBeClickable()
您可以使用以下任一定位器策略:使用
xpath
以及contains()
:使用
xpath
以及normalize-space()
:zazmityj2#
可以使用xpath:
请注意,搜索方式
text()="Search"
不会工作,因为按钮文本不完全正确"Search"
-文本内容包含行break/spaces