关于 selenium 封装后 find_elements 不到表格里的 tr 元素的问题
自己封装了base_page.py用来实现对页面对象的一些操作
html页面如下图:
base_page.py中的定位方法如下:
# 定位元素方法
def find_element(self, *selector):
"""
传入元组
"""
try:
element = self.driver.find_element(*selector)
logger.info("通过%s找的元素已被定位 " % str(selector))
return element
except NoSuchElementException as e:
logger.error("找不到元素 %s" % e)
def find_elements(self, *selector):
try:
elements = self.driver.find_elements(*selector)
logger.info('通过%s找到了%d个元素' % (str(selector), len(elements)))
return elements
except NoSuchElementException as e:
logger.error("找不到元素集合 %s" % e)
#获得元素属性
def get_attribute(self, *selector, attribute):
try:
element = self.find_element(*selector)
return element.get_attribute(attribute)
except Exception as e:
logger.info("获得元素的%s属性失败" % e)
这个页面的类方法代码如下:
import BasePage
from selenium.webdriver.common.by import By
class DocsPage(BasePage):
doc_links = (By.XPATH,
'//div[@id="viewDisplay"]/table/tbody/tr/td[8]/font/a')
def get_docs_link(self):
return [
doc.get_attribute('href')
for doc in self.find_elements(*self.doc_links)
]
为什么通过方法想得到的链接值
docs = DocsPage(self.driver)
docs.open(pageurl)
print(docs.get_docs_link())
提示
2020-03-14 20:26:53,503 - BasePage - INFO - 通过(‘xpath’, ‘//div[@id=”viewDisplay”]/table/tbody/tr/td[8]/font/a’)找到了0个元素
[]
XPATH '//div[@id="viewDisplay"]/table/tbody/tr/td[8]/font/a'
tbody -> tr -> td[8]
这里有两个tr, 你漏了一个.....tr[2], 是吧...