如何为selenium python绑定找到具有相对xpath的dom元素?

时间:2015-11-03 16:35:57

标签: python selenium xpath selenium-webdriver

问题

  1. 找到包含某些文字的实体。 (已完成。)
  2. 找到1.(我无法找到)
  3. 旁边的实体

    注意:我不能通过id,name,class使用常规locate元素,因为实体1将针对其他页面进行更改。

    HTML代码

    <table cellspacing="1" cellpadding="2">
      <tbody>
        <tr>
          <td><span tabindex="-1"><label for="value:1:1:1">companyID</label></span>
            <input type="hidden" value="companyID" id="fieldName:1:1:1" name="fieldName:1:1:1">
          </td>
          <td>
            <select name="operand:1:1:1">
              <option selected="" value="EQ">equals</option>
              <option value="LK">matches</option>
              <option value="UL">not matches</option>
              <option value="NE">not equal to</option>
              <option value="GT">greater than</option>
              <option value="GE">greater than or equals</option>
              <option value="LT">less than</option>
              <option value="LE">less than or equals</option>
              <option value="RG">between</option>
              <option value="NR">not between</option>
              <option value="CT">contains</option>
              <option value="NC">not containing</option>
              <option value="BW">begins with</option>
              <option value="EW">ends with</option>
              <option value="DNBW">does not begin with</option>
              <option value="DNEW">does not end with</option>
              <option value="SAID">sounds like</option>
            </select>
          </td>
          <td align="right">
            <input type="text" frequencydropfieldname="value:1:1:1" value="123" size="20" id="value:1:1:1" name="value:1:1:1">
            <input type="hidden" value="none" id="sort:1:1:1" name="sort:1:1:1">
          </td>
          <td></td>
        </tr>
        <tr>
          <td><span tabindex="-1"><label for="value:2:1:1">componentID</label></span>
            <input type="hidden" value="componentID" id="fieldName:2:1:1" name="fieldName:2:1:1">
          </td>
          <td>
            <select name="operand:2:1:1">
              <option selected="" value="EQ">equals</option>
              <option value="LK">matches</option>
              <option value="UL">not matches</option>
              <option value="NE">not equal to</option>
              <option value="GT">greater than</option>
              <option value="GE">greater than or equals</option>
              <option value="LT">less than</option>
              <option value="LE">less than or equals</option>
              <option value="RG">between</option>
              <option value="NR">not between</option>
              <option value="CT">contains</option>
              <option value="NC">not containing</option>
              <option value="BW">begins with</option>
              <option value="EW">ends with</option>
              <option value="DNBW">does not begin with</option>
              <option value="DNEW">does not end with</option>
              <option value="SAID">sounds like</option>
            </select>
          </td>
          <td align="right">
            <input type="text" frequencydropfieldname="value:2:1:1" value="ZZ" size="20" id="value:2:1:1" name="value:2:1:1">
            <input type="hidden" value="none" id="sort:2:1:1" name="sort:2:1:1">
          </td>
          <td></td>
        </tr>
    

    Python代码

    from selenium import webdriver
    import time
    driver = webdriver.Firefox()
    driver.maximize_window()
    driver.get('file:///C:/Users/gmunteanu/Desktop/test_table.html')
    time.sleep(2)
    print driver.find_elements_by_xpath("//*[contains(text(), 'companyID')]/td[3]/input[1]")
    

1 个答案:

答案 0 :(得分:1)

&#34;&#34;&#34;有following-sibling符号:

//span[contains(label, 'companyID')]/following-sibling::input

另外,您是否只能通过input属性获取value

//input[@value = 'companyID']

*假设您的目标是隐藏的input元素。