【问题标题】:How can I find an element with maximum index using selenium-python如何使用 selenium-python 找到具有最大索引的元素
【发布时间】:2015-11-18 11:52:33
【问题描述】:

我正在尝试借助索引来定位元素。

目前我使用下面的xpath通过提供匹配的索引值来识别。
//table/tbody/tr[@index='1']

如何定位具有最大索引值的元素?

【问题讨论】:

    标签: python python-3.x selenium selenium-webdriver


    【解决方案1】:

    您可以使用内置的max 函数,将key 参数指定为检索index 属性的函数。

    # Setup
    from selenium import webdriver
    browser = webdriver.Firefox()
    browser.get('http://example.com')
    rows = browser.find_elements_by_xpath("//table/tbody/tr")
    
    # Solution
    max_element = max(rows, key=lambda e: e.get_attribute('index'))
    

    如果 lambda 看起来有点混乱,您可以将其分解为一个普通函数:

    def get_index(element): return element.get_attribute('index')
    max_element = max(rows, key=get_index)
    

    如果您需要多个最大值,我会在每个上调用 get_attribute 并将其传递给 max 以获得最大值 index,然后再次遍历列表以获得最大值:

    max_index = max(e.get_attribute('index') for e in rows)
    max_elements = [e for e in rows if e.get_attribute('index') == max_index]
    

    【讨论】:

      【解决方案2】:

      你可以试试这样的。我认为没有直接找到最高值的 xpath。

      trs = driver.find_elements_by_xpath("//table/tbody/tr")
      max = 0
      i = 0
      for index, tr in enumerate(trs):
          if max < int(tr.get_attribute('index')):
              max = int(tr.get_attribute('index'))
              i = index
      
      max = trs[i]
      
      # If there are more than one elements with the same max value
      maxs = driver.find_elements_by_xpath("//table/tbody/tr[@index='" + str(max) + "']")
      

      【讨论】:

      • @Jason Estibeiro:我试过上面的代码。我有错误。然后我稍微修改了一下。这是工作。谢谢。
      • @TesterP - 我忘了枚举trs。我已经编辑了答案。请再次检查。
      【解决方案3】:
      Below code worked for me:
      
      trs = driver.find_elements_by_xpath("//table/tbody/tr")
          max = 0
          i = 1
          for tr in trs:
              if max < int(tr.get_attribute('index')):
                  max = int(tr.get_attribute('index'))
                  i = max                
          print (str(i))
      

      【讨论】:

        猜你喜欢
        • 2011-02-22
        • 1970-01-01
        • 2013-11-14
        • 2021-07-02
        • 1970-01-01
        • 1970-01-01
        • 2022-07-28
        • 1970-01-01
        相关资源
        最近更新 更多