![](/img/trans.png)
[英]How to find text on a webpage and get its XPath or CSS with Selenium and Java
[英]How to find button with Selenium by its text inside (Java)?
我有一個像下面這樣的按鈕。 我不知道如何通過它的文本來抓取它Search 。 這個頁面上有很多按鈕。
<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 |
您可以使用 XPATH:
//button[normalize-space()="Search"]
請注意,按text()="Search"
將不起作用,因為按鈕文本不完全是"Search"
- 文本內容包含換行符/空格
find_element_by_xpath()
在使用Selenium的Java客戶端時不是有效的方法。
同樣,文本為Search的WebElement位於其父<button>
和Angular元素的子<span>
中。
因此,要通過文本(即搜索)識別元素,您需要為elementToBeClickable()
引入WebDriverWait ,您可以使用以下任一定位器策略:
使用xpath
和contains()
:
WebElement searchBtn = new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//button/span[contains(., 'Search')]")));
使用xpath
和normalize-space()
:
WebElement searchBtn = new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//button/span[normalize-space()='Search']")));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.