如果 browser.find_element_by_xpath 没有数据或无法定位元素时条件不起作用
If condition is not working when browser.find_element_by_xpath has no data or unable to locate element
if not(browser.find_element_by_xpath('//div[@id="MainCopy_ctl13_presentJob_EmailAddressPanel"]//a')):
email = 'No data'
else:
email = browser.find_element_by_xpath('//div[@id="MainCopy_ctl13_presentJob_EmailAddressPanel"]//a').get_attribute("textContent")
print(email)
browser.find_element_by_xpath('//div[@id="MainCopy_ctl13_presentJob_EmailAddressPanel"]//a')).get_attribute("textContent")
没有数据。
我写了一个条件,如果我们在提供的 xpath 中没有数据,它应该替换为 'no data'。
如果存在数据,我们需要存储电子邮件地址,否则我们需要存储默认值(即)'no data'
这是我每次都收到的错误。
selenium.common.exceptions.NoSuchElementException: Message: no such
element: Unable to locate element:
{"method":"xpath","selector":"//div[@id="MainCopy_ctl13_presentJob_EmailAddressPanel"]//a"}
(Session info: chrome=88.0.4324.150)
您可以 运行 在 try/except 子句中这样做。
try:
email = browser.find_element_by_xpath('//div[@id="MainCopy_ctl13_presentJob_EmailAddressPanel"]//a').get_attribute("textContent")
except:
email = 'No data'
您也可以使用 find_elements
,如果找不到该元素,它将 return 一个空列表。然后,您可以使用 if 语句测试列表是否为空。
if browser.find_elements_by_xpath('//div[@id="MainCopy_ctl13_presentJob_EmailAddressPanel"]'):
email = browser.find_element_by_xpath('//div[@id="MainCopy_ctl13_presentJob_EmailAddressPanel"]//a').get_attribute("textContent")
else:
email = 'No data'
if not(browser.find_element_by_xpath('//div[@id="MainCopy_ctl13_presentJob_EmailAddressPanel"]//a')):
email = 'No data'
else:
email = browser.find_element_by_xpath('//div[@id="MainCopy_ctl13_presentJob_EmailAddressPanel"]//a').get_attribute("textContent")
print(email)
browser.find_element_by_xpath('//div[@id="MainCopy_ctl13_presentJob_EmailAddressPanel"]//a')).get_attribute("textContent")
没有数据。我写了一个条件,如果我们在提供的 xpath 中没有数据,它应该替换为 'no data'。
如果存在数据,我们需要存储电子邮件地址,否则我们需要存储默认值(即)'no data'
这是我每次都收到的错误。
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//div[@id="MainCopy_ctl13_presentJob_EmailAddressPanel"]//a"} (Session info: chrome=88.0.4324.150)
您可以 运行 在 try/except 子句中这样做。
try:
email = browser.find_element_by_xpath('//div[@id="MainCopy_ctl13_presentJob_EmailAddressPanel"]//a').get_attribute("textContent")
except:
email = 'No data'
您也可以使用 find_elements
,如果找不到该元素,它将 return 一个空列表。然后,您可以使用 if 语句测试列表是否为空。
if browser.find_elements_by_xpath('//div[@id="MainCopy_ctl13_presentJob_EmailAddressPanel"]'):
email = browser.find_element_by_xpath('//div[@id="MainCopy_ctl13_presentJob_EmailAddressPanel"]//a').get_attribute("textContent")
else:
email = 'No data'