簡體   English   中英

簡單的Selenium RegEx Java

[英]Simple Selenium RegEx Java

我不熟悉如何在Selenium中使用Reg Ex,所以我希望能得到一些幫助。 目前,當它運行時,它找不到任何令人驚訝的元素。

List<WebElement> elements = SeleniumCommands.myDriver.findElements(By.id("assessment-answer-{[0-9]+}-1"));

我試圖抓住的東西看起來像

<input id="assessment-answer-5713185-1" ...>

這是一個更大的HTML解析網站,用於選擇編寫目的。

<div id="assessment-page-1">
  <ul id="question-row-5713185" class="plus-card card-white question-row">
    <li id="question-collapsible-5713185" class="question-collapsible">
    <li id="answers-container-5713185" class="answers-container">
      <div class=" assessment-two-answers">
      <input id="assessment-answer-5713185-1" type="radio" value="1" name="assessment-answer-5713185"/>
      <label class="assessment-answer-right answer-1" for="assessment-answer-5713185-1">Agree</label>
      <input id="assessment-answer-5713185-2" type="radio" value="2" name="assessment-answer-5713185"/>
      <label class="assessment-answer-left answer-2" for="assessment-answer-5713185-2">Disagree</label>
      </div>
    </li>
  </ul>
  <ul id="question-row-16432246" class="plus-card card-white question-row">
    <li id="question-collapsible-16432246" class="question-collapsible">
    <li id="answers-container-16432246" class="answers-container">
  </ul>
  <ul id="question-row-62590768" class="plus-card card-white question-row">
  <ul id="question-row-16162378" class="plus-card card-white question-row">
  <ul id="question-row-34160582" class="plus-card card-white question-row">

...
</div>

我對Reg Ex不是很有經驗,我知道這可能是我的問題的原因,所以我為這個簡單的問題道歉,但是會感激任何幫助。

使用starts-withends-with定位符/表示法:

List<WebElement> elements = SeleniumCommands.myDriver.findElements(By.cssSelector("[id^=assessment-answer-][id$=\"-1\"]"));

您可能還需要等待元素變為可見:

WebDriverWait wait = new WebDriverWait(SeleniumCommands.myDriver, 5);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("[id^=assessment-answer-][id$=\"-1\"]")));

List<WebElement> elements = SeleniumCommands.myDriver.findElements(By.cssSelector("[id^=assessment-answer-][id$=\"-1\"]"));

您還可以在ID(或id的一部分)的幫助下構造xpath以查找webelement。 在這種情況下,您的代碼應如下所示:

List<WebElement> elements = SeleniumCommands.myDriver.findElements(By.xpath("//*[contains(@id,'assessment-answer-')]"));

解釋構造的xpath:

// - 在dom中的任何層次結構中查找元素

* - 標識標簽名稱。 如果我們知道標簽名稱,我們可以傳遞相同的名稱。 如果不確定標簽名稱,請將其傳遞為*

[contains(XX,XX)] - 在xpath中添加過濾器

@id - 過濾條件

assessment-answer- - 這是部分id(總是不變的)

試一下。

祝好運。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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