[英]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.