我正在尝试使用 Xpath 查找一个元素,但它的变化是这样的:
//*[@id="emailwrapper"]/div/div/table[1]/tbody/tr/td[2]/a
//*[@id="emailwrapper"]/div/div/table[2]/tbody/tr/td[2]/a
//*[@id="emailwrapper"]/div/div/table[3]/tbody/tr/td[2]/a
//*[@id="emailwrapper"]/div/div/table[4]/tbody/tr/td[2]/a
//*[@id="emailwrapper"]/div/div/table[5]/tbody/tr/td[2]/a
//*[@id="emailwrapper"]/div/div/table[6]/tbody/tr/td[2]/a
我目前的假设是,我正在寻找的表将永远是表数组中的最后一个,但我想通过计算第二个div 中的表数来确认这一点。有谁知道如何做到这一点?
简单的解决方案是使用以下 xpath。
//*[@id='emailwrapper']/div/div/table
你的代码应该是
lastTable = len(driver.find_elements_by_xpath("//*[@id='emailwrapper']/div/div/table"))-1
print lastTable
假设至少有一个元素与 '//*[@id="emailwrapper"]/div/div/table' 的 xpath 匹配,你可以简单地做:
driver.find_elements_by_xpath('//*[@id="emailwrapper"]/div/div/table')
它将返回一个列表,如果没有找到,它将引发 NoSuchElementException。
完全相同的结果,但写法不同:
from selenium.webdriver.common.by import By
driver.find_elements(By.XPATH, '//*[@id="emailwrapper"]/div/div/table')
之后,您可以在列表中执行 len(( 以显示有多少元素