selenium是否可以使用xpath通过其“for”属性查找标签元素?

时间:2015-07-14 22:05:05

标签: selenium xpath attributes qa

selenium是否可以通过使用xpath的“for”属性查找标签元素?

我正在测试一个有7个是或否有问题的网站。完成CSS的方式是,单击标签而不是输入单选按钮。通常情况下,我只是按文字内容找到元素,但每个问题都有“是”和“否”。

我认为解决方法是在输入按钮上点击javascript以解决“直接尝试.click()输入时出现的”元素不可见“错误,但是我想知道是否有更好的方法来找到用户实际点击的标签。

*编辑所有无法记住标签元素的人。你会如何选择这一组的中间人?

<label for="superLongSetOfRandomCharacters123" class="common-to-all-buttons"> No </label>
<label for="superLongSetOfRandomCharacters345" class="common-to-all-buttons"> No </label>
<label for="superLongSetOfRandomCharacters456" class="common-to-all-buttons"> No </label>

更具体地说,这就是他们坐在DOM中的方式

<ul class="list-view list-view-dividers">
   <li class="list-view-item">
      <div class="content">
         <div id="variableValue1" class="multipleChoice">
            <div class="form-row">
               <label>Question 1</label>
               <div class="form-row">
                  <table class="choices" id="randomlyGenerated-1">
                     <tbody>
                        <tr>
                           <td>
                              <div class="ui-radio"><label for="randomlyGenerated1" class="ui-btn ui-corner-all ui-btn-inherit ui-btn-icon-left ui-radio-off"> Yes</label><input id="randomlyGenerated1" type="radio" name="randomlyGenerated1" value="Yes"></div>
                           </td>
                           <td>
                              <div class="ui-radio"><label for="randomlyGenerated2" class="ui-btn ui-corner-all ui-btn-inherit ui-btn-icon-left ui-radio-off"> No</label><input id="randomlyGenerated2" type="radio" name="randomlyGenerated2" value="No"></div>
                           </td>
                        </tr>
                     </tbody>
                  </table>
               </div>
            </div>
            <div id="randomlyGenerated1-Error" class="component-error"></div>
         </div>
      </div>
   </li>
   <li class="list-view-item">
      <div class="content">
         <div id="variableValue2" class="multipleChoice">
            <div class="form-row">
               <label>Question 2</label>
               <div class="form-row">
                  <table class="choices" id="randomlyGenerated-2">
                     <tbody>
                        <tr>
                           <td>
                              <div class="ui-radio"><label for="randomlyGenerated21" class="ui-btn ui-corner-all ui-btn-inherit ui-btn-icon-left ui-radio-off"> Yes</label><input id="randomlyGenerated21" type="radio" name="randomlyGenerated21" value="Yes"></div>
                           </td>
                           <td>
                              <div class="ui-radio"><label for="randomlyGenerated22" class="ui-btn ui-corner-all ui-btn-inherit ui-btn-icon-left ui-radio-off"> No</label><input id="randomlyGenerated22" type="radio" name="randomlyGenerated22" value="No"></div>
                           </td>
                        </tr>
                     </tbody>
                  </table>
               </div>
            </div>
            <div id="randomlyGenerated2-Error" class="component-error"></div>
         </div>
      </div>
   </li>
</ul>

3 个答案:

答案 0 :(得分:2)

适用于选择所有标记为&#39; for&#39;: label[@for='superLongSetOfRandomCharacters123']

或者您可以将@for=''留空以选择所有带有任何值的标签

答案 1 :(得分:1)

我想,您正在寻找的XPath-Option将是&#34; @&#34;。所以在你的情况下,像[/] / label / @这样的东西会返回你的值,你可以用它来检查你的位置;)

干杯 d

答案 2 :(得分:0)

使用find_element_by_xpath

label = self.browser.find_element_by_xpath('//label[@for="id_field"]')