簡體   English   中英

如何通過 Selenium 中的文本(Java)找到帶有 Selenium 的按鈕?

[英]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()在使用SeleniumJava客戶端時不是有效的方法。

同樣,文本為SearchWebElement位於其父<button>Angular元素的子<span>中。

因此,要通過文本(即搜索)識別元素,您需要為elementToBeClickable()引入WebDriverWait ,您可以使用以下任一定位器策略

  • 使用xpathcontains()

     WebElement searchBtn = new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//button/span[contains(., 'Search')]")));
  • 使用xpathnormalize-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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM