【问题标题】:Go upwards to ancestor than backwards 2 siblings using Xpath使用 Xpath 向上到祖先而不是向后 2 个兄弟姐妹
【发布时间】:2017-07-31 01:04:30
【问题描述】:

我有类似 HTML

<span class="state">
  <label class="state button start" ...>"Start"</label>
</span>
<span class="name tracker_markup">
  <span class="labels pre">...</span>
  <span class="story_name">title</span>
</span>

我将始终知道“故事名称”部分,在本例中为“标题”。我需要单击标签部分“开始”。我怎样才能在 Xpath 中做到这一点? Beautiful Soup 没问题,但 Xpath 更简单。

【问题讨论】:

  • 您有多个标题部分吗?还是你有多个开始按钮?
  • 两者。每个关键跟踪器故事都有一个header 部分和start 按钮

标签: python html xpath selenium-webdriver


【解决方案1】:

尝试使用下面的XPath表达式:

//span[span[@class="story_name" and text()="title"]]/preceding-sibling::span/label

【讨论】:

    【解决方案2】:

    一个选项是这样的:

    //header[.//span[text()='title']]//span[@class='state']/label
    

    //header[.//span[text()='title']]//label[contains(@class, 'start')]
    

    或带有部分标题

    //header[.//span[contains(text(), 'part_title')]]//label[contains(@class, 'start')]
    

    我会找到带有 title 的唯一部分,而不是导航,然后像上面一样在其中找到元素。您可以尝试多种类型的组合与任何 attribute 或使用完整值的文本或使用部分值的 contains

    【讨论】:

    • .//span 中的点是什么意思?
    • 在当前节点中搜索,意思是在标头标签中 -> 在这种情况下,找到一个标头,其中包含任何软件,其中包含该文本的跨度。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多