[英]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-with和ends-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.