【发布时间】:2019-12-04 19:57:35
【问题描述】:
我试图在我的自动化程序中捕获错误并将它们作为参数传递给另一个函数。 我的目标是存储这些在自动机期间导致错误的 selenium 对象,并在主要功能完成后处理它们。
现在,我将错误详细信息发送到 csv 文件中:
def send_keys_dropdown(self,url,csv_name):
elements = bot.find_elements_by_xpath("//a[@data-tag='globalize']")
for elem in elements:
class_of_element = elem.get_attribute("class")
if class_of_element == 'CsLinkButton':
try:
# Some actions here
except (ElementNotInteractableException, ElementNotVisibleException) as e:
handle_errors(elem, url, e)
pass
如您所见,handle_errors() 函数接受 3 个参数,并且:
def handle_errors(self, elem, url, e):
bot = self.bot
with open('errors.csv', mode='w', newline='', encoding="utf-8") as csv_file:
fieldnames = ['URL', 'Element', 'Error']
writer = csv.DictWriter(csv_file, fieldnames=fieldnames)
writer.writeheader()
writer.writerow({ 'URL': url, 'Element': elem, 'Error':e })
with open('errors.csv', 'rt',encoding='utf8') as csvfile:
errors_list = csv.reader(csvfile, delimiter=',', quotechar='"')
errors_list = list(errors_list)
bot.get(url)
time.sleep(3)
此函数将从 csv 获取 url 并转到导致错误的页面,下一个应该是查找导致错误的元素。但是,我不知道如何存储这些 selenium 对象。
我尝试直接传递元素(不写入 csv),但仍然无法正常工作。
感谢您的帮助!
【问题讨论】:
-
使用 element.getAttribute('innerHTML') 和 element.getAttribute('outerHTML')
标签: python selenium automation