繁体   English   中英

如何使用Selenium-Python查找具有最大索引的元素

[英]How can I find an element with maximum index using selenium-python

我试图借助索引来定位元素。

目前,我正在xpath下面使用提供匹配的索引值进行标识。
//table/tbody/tr[@index='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]

您可以尝试这样。 我认为没有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) + "']")
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))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM