当前位置: 首页 > 面试题库 >

如何找到跳过内部元素的元素的xpath

太叔京
2023-03-14
问题内容

我有一个复杂的html结构,其中包含许多表和div ..而且结构可能会更改。如何通过跳过两者之间的元素来查找xpath。例如 :

<table>
  <tr>
    <td>
      <span>First Name</span>
    </td>
    <td>
      <div>
        <table>
          <tbody>
            <tr>
              <td>
                <div>
                  <table>
                    <tbody>
                      <tr>
                        <td>
                          <img src="1401-2ATd8" alt="" align="middle">
                        </td>
                        <td><span><input atabindex="2"  id=
                        "MainLimitLimit" type="text"></span></td>
                      </tr>
                    </tbody>
                  </table>
                </div>
              </td>
            </tr>
          </tbody>
        </table>
      </div>
    </td>
  </tr>
</table>

我必须获取有关“名字”范围的输入元素

例如:

By.xpath("//span[contains(text(), 'First Name')]/../../td[2]/div/table/tbody/tr/td/table/tbody/tr/td[2]/input")

但是..我可以跳过htmls之间的内容并直接访问输入元素吗?

By.xpath("//span[contains(text(), 'First Name')]/../../td[2]//input[contains@id,'MainLimitLimit')]")

问题答案:

您可以尝试以下Xpath:

//td[contains(span,'First Name')]/following-sibling::td[1]//input[contains(@id, 'MainLimitLimit')]

说明:

选择<td><span>First Name</span></td>元素:

//td[contains(span,'First Name')]

然后<td>在上方<td>元素旁边获取元素:

/following-sibling::td[1]

然后在上面第二步中选择的<input>元素内获取元素<td>

//input[contains(@id, 'MainLimitLimit')]


 类似资料:
  • 但是..我可以跳过HTML,直接访问输入元素吗…好像?

  • 如何跳过中的数组元素? 我的代码: 这将返回:

  • 我通过以下方式通过文本找到了一个孩子。 问题是我需要单击父元素。页面上的元素是动态显示的,之前我只知道文本。是否可以对此进行编程? 我的html:

  • 我正在制作一个python脚本,给出Scratch.mit.edu网站上的前5个特色项目。我正在使用请求获取数据。具有这些项目标题的元素位于div标记中,但当我使用bs4时,它不显示div标记的子项或后代。我怎么看标签里面? 我已经尝试了find_all()、find()、.descendents和.children。 我需要 的输出 匿名用户 API 使用页面用来更新内容和解析json响应的ap

  • 我将Selenium与PHP WebDriver结合使用。我试图单击导航栏中的链接,该链接显示在HTML中,如下所示: 我正在尝试选择元素,然后单击它。但是,当我尝试使用xpath时,如下所示: 或 我得到以下错误: 没有这样的元素:无法定位元素:{“method”:“xpath”,“selector”:“/*[@showpage=“cards”]”}(会话信息:chrome=70.0.3538.