Python 如果 elif else 不能去 elif 语句 Selenium



我有一段代码,检查是否有使用p显示的元素,然后显示一个对话框,但如果它找不到它,然后检查另一个元素,如果显示另一个对话框,如果该元素不可用,然后运行一段代码。

代码在这里。

if driver.find_element_by_class_name('error-code').is_displayed():
LoginError.show()
elif driver.find_element_by_xpath('//*[@id="sample-data-table"]/thead').is_displayed():
QuestionUnavailable.show()
else:
if driver.find_element_by_xpath('//*[@id="radio1"]').is_displayed():
driver.find_element_by_xpath('//*[@id="radio1"]').click()
driver.find_element_by_xpath('//*[@id="btn-savecheck"]').click()
time.sleep(1)
driver.find_element_by_xpath('//*[@id="btn-alert-ok"]').click()

但是当我运行它时,我得到了这个错误

File "Sciborg.py", line 60, in This
File "C:Python39libsite-packagesseleniumwebdriverremotewebdriver.py", line 564, in find_element_by_class_name
return self.find_element(by=By.CLASS_NAME, value=name)
File "C:Python39libsite-packagesseleniumwebdriverremotewebdriver.py", line 976, in find_element
return self.execute(Command.FIND_ELEMENT, {
File "C:Python39libsite-packagesseleniumwebdriverremotewebdriver.py", line 321, in execute
self.error_handler.check_response(response)
File "C:Python39libsite-packagesseleniumwebdriverremoteerrorhandler.py", line 242, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":".error-code"}

从错误中可以清楚地看到,您的代码无法定位由error-code类名定位的元素。
这可能是由以下几个问题引起的:

  1. 您使用了错误的定位器,该页上没有具有error-code类名称属性的元素
  2. 您错过了等待/延迟。可能您正在尝试在加载页面之前访问此元素
  3. 也许那里有一个iframe,所以那个元素在iframe里面,所以你必须切换到那个iframe才能访问所需的元素。
    乌利希期刊指南
    如果页面上没有这样的元素,您可以使用find_elements代替find_element方法,如下所示:
if driver.find_elements_by_class_name('error-code'):
LoginError.show()
elif driver.find_elements_by_xpath('//*[@id="sample-data-table"]/thead'):
QuestionUnavailable.show()
else:
if driver.find_elements_by_xpath('//*[@id="radio1"]'):
driver.find_element_by_xpath('//*[@id="radio1"]').click()
driver.find_element_by_xpath('//*[@id="btn-savecheck"]').click()
time.sleep(1)
driver.find_element_by_xpath('//*[@id="btn-alert-ok"]').click()

driver.find_elements_by_class_name('error-code')将返回一个web元素列表。如果元素存在,这将返回一个非空列表,并被解释为布尔值true。否则,它将返回一个空列表,被解释为布尔值false
类似地,我已经更新了其他if的情况。
但是您仍然应该确保您尝试直接访问的元素是存在的。
我指的是这些元素:

driver.find_element_by_xpath('//*[@id="radio1"]').click()
driver.find_element_by_xpath('//*[@id="btn-savecheck"]').click()
time.sleep(1)
driver.find_element_by_xpath('//*[@id="btn-alert-ok"]').click()

相关内容

  • 没有找到相关文章

最新更新