代码之家  ›  专栏  ›  技术社区  ›  Debopam

基于嵌套元素文本的硒Java选择div

  •  0
  • Debopam  · 技术社区  · 5 年前

    我有下面的HTML结构。希望选择具有

    值为3。

    我尝试过以下xpath表达式

    "//label[contains(@class='options')]/div/p[contains(text(),'3.x')]"
    "//div[@class='answerOpts']/label[contains(@class='options')]/div/p[contains(text(),'3.x')]"
    

    但它不起作用。接收到异常 org.openqa.selenium.NoSuchElementException: Unable to locate element: . 你能告诉我解决办法吗?

    HTML结构

    <div class="answerOpts">
       <input class="optionRadios" type="radio" name="2565" id="answer_9218" value="9218">
       <label class="options searchable" for="answer_9218">
          <div>
             <p>2.x</p>
          </div>
       </label>
       <input class="optionRadios" type="radio" name="2565" id="answer_9219" value="9219">
       <label class="options searchable" for="answer_9219">
          <div>
             <p>3.x</p>
          </div>
       </label>
       <input class="optionRadios" type="radio" name="2565" id="answer_9220" value="9220">
       <label class="options searchable" for="answer_9220">
          <div>
             <p>4.x</p>
          </div>
       </label>
       <input class="optionRadios" type="radio" name="2565" id="answer_9217" value="9217">
       <label class="options searchable" for="answer_9217">
          <div>
             <p>1.x</p>
          </div>
       </label>
    </div>
    
    2 回复  |  直到 5 年前
        1
  •  1
  •   Sers    5 年前

    下面是一些XPath示例 label 元素:

    //label[normalize-space(.)='3.x']
    //label[contains(@class,'options') and .//p[.='3.x']]
    //label[contains(@class,'options') and @for and .//p[.='3.x']]
    //p[.='3.x']/ancestor::label[1]
    //p[.='3.x']/ancestor::label[contains(@class,'searchable')][1]
    
        2
  •  1
  •   jitendra gupta    5 年前

    尝试使用下面的xpath

    .//Div/P[Text()='3.x']/Parent::Div/Parent::Label/前一个兄弟姐妹::输入[1]