【问题标题】:Click on a generic element from a generic list单击通用列表中的通用元素
【发布时间】:2017-10-02 10:53:58
【问题描述】:

The code itself

需要有关如何单击通用列表中的通用元素的一些想法的帮助。

例如,我需要从以下列表中选择 last 列表元素,即<div class="venue-item"><div id="list">。并点击以下标签<a href="#" class="venue-actions dropdown-toggle" data-toggle="dropdown"></a>

可能是创建一个Python库?

<div id="list" class="row" style="opacity: 1;">
  <div class="venue-item">
      <a class="venue-actions dropdown-toggle" data toggle="dropdown" href="#"></a>
      <ul class="dropdown-menu">
      <h3>test_by_alex_lggge</h3>
      <a class="show-details-btn" href="#">
  <div class="venue-item">
      <a class="venue-actions dropdown-toggle" data toggle="dropdown" href="#"></a>
      <ul class="dropdown-menu">
      <h3>test_by_alex_lggge</h3>
      <a class="show-details-btn" href="#">
  <div class="venue-item">
      <a class="venue-actions dropdown-toggle" data toggle="dropdown" href="#"></a>
      <ul class="dropdown-menu">
      <h3>test_by_alex_lggge</h3>
      <a class="show-details-btn" href="#">
  <div class="venue-item">
      <a class="venue-actions dropdown-toggle" data toggle="dropdown" href="#"></a>
      <ul class="dropdown-menu">
      <h3>test_by_alex_lggge</h3>
      <a class="show-details-btn" href="#">
  <div class="venue-item">
      <a class="venue-actions dropdown-toggle" data toggle="dropdown" href="#"></a>
      <ul class="dropdown-menu">
      <h3>test_by_alex_lggge</h3>
      <a class="show-details-btn" href="#">
  <div class="venue-item">
      <a class="venue-actions dropdown-toggle" data toggle="dropdown" href="#"></a>
      <ul class="dropdown-menu">
      <h3>test_by_alex_lggge</h3>
      <a class="show-details-btn" href="#">
  <div class="venue-item">
      <a class="venue-actions dropdown-toggle" data toggle="dropdown" href="#"></a>
      <ul class="dropdown-menu">
      <h3>test_by_alex_lggge</h3>
      <a class="show-details-btn" href="#">
  <div class="item-detail">
      <a class="venue-actions dropdown-toggle" data toggle="dropdown" href="#"></a>
      <ul class="dropdown-menu">
      <h3>test_by_alex_lggge</h3>
      <a class="show-details-btn" href="#">
 </div>
 <div class="organisation-details">
 <div id="delete-schedule-26681" class="modal fade" role="dialog">
 </div>
</div>

【问题讨论】:

  • 你能告诉我们你的尝试吗?例如,您是否阅读过 xpath 文档以了解如何访问组中的第 n 个项目?
  • 是的,我已经阅读了 xpath 文档,但只有明确定义的元素的想法。但在我的情况下,元素列表可以是灵活的,例如,如果今天是 6 个元素,那么明天可能是 9 个元素。我想我应该计算列表,然后检测最后一个元素,然后从列表的最后一个元素中单击所需的子元素。
  • @Alex 您能否在问题中更具体一些,您想要定位什么元素。如果您想始终获得最后一个元素,那是可行的;如果你想通过它的文本值来获取它,也可以。但是说“通用”没有任何意义——应该有一些你所追求的模式。
  • 我相信你可以使用 xpath 选择最后一个元素。 stackoverflow.com/questions/13508130/…
  • @Todor ,是的,目前我需要从列表中选择最后一个元素。

标签: python html tags robotframework


【解决方案1】:

要使用class="venue-item" 获取最后一个&lt;div&gt;,请使用此xpath:

(//div[@id="list"]/div[@class="venue-item"])[last()]

一些解释 - 第一部分 (//div[@id="list"]) 获取具有此类 id 值的所有元素(在您的示例中 - 1)。第二个 (div[@class="venue-item"]) 选择它的所有直系后代 - 这将为我们提供一个包含此类的所有 div 的列表。最后一部分 - [last()] 将返回返回列表的最后一个元素。

第 1 部分和第 2 部分的括号在这里,因为xpath precedence and scope of axes and operators。 在这个特定的集合中它是不需要的,但是如果第一部分和第二部分的连接器是//,那将有很大的不同。

【讨论】:

    猜你喜欢
    • 2016-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-10
    • 1970-01-01
    • 2021-02-02
    • 2019-05-18
    • 1970-01-01
    相关资源
    最近更新 更多