首页 > 解决方案 > 如何修复 if 语句在 selenium 中不起作用

问题描述

如果 else 语句不起作用,如何解决这个问题!

我想在那里添加 if 语句 if button not find print there is no button something 但是当找不到按钮时它给了我这个错误!

错误:

Traceback (most recent call last):
  File "bing2.py", line 24, in <module>
    if (driver.find_element_by_css_selector('.sb_pagN_bp')):
  File "C:\Users\Lenovo\AppData\Local\Programs\Python\Python37-32\lib\site-packa
ges\selenium\webdriver\remote\webdriver.py", line 598, in find_element_by_css_se
lector
    return self.find_element(by=By.CSS_SELECTOR, value=css_selector)
  File "C:\Users\Lenovo\AppData\Local\Programs\Python\Python37-32\lib\site-packa
ges\selenium\webdriver\remote\webdriver.py", line 978, in find_element
    'value': value})['value']
  File "C:\Users\Lenovo\AppData\Local\Programs\Python\Python37-32\lib\site-packa
ges\selenium\webdriver\remote\webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "C:\Users\Lenovo\AppData\Local\Programs\Python\Python37-32\lib\site-packa
ges\selenium\webdriver\remote\errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: no such element: Una
ble to locate element: {"method":"css selector","selector":".sb_pagN_bp"}
  (Session info: chrome=79.0.3945.88)

这是我的代码:

for i in range(1,21):
    if (driver.find_element_by_css_selector('.sb_pagN_bp')):
        nextp = driver.find_element_by_css_selector('.sb_pagN_bp').click()
        description = driver.find_elements_by_css_selector("p")
        items = len(description)
        with open(s_csv,'a',encoding="utf-8") as s:
            for i in range(items):
                s.write(description[i].text + '\n') 
    else:
        nextp = 'There is no next button!'
        print(nextp)

标签: selenium

解决方案


将 if-else 替换为 try-except。在上面的代码中,如果未找到 Web 元素,则 if 条件将引发NoSuchElementException 。

try:
  driver.find_element_by_css_selector('.sb_pagN_bp')
  nextp = driver.find_element_by_css_selector('.sb_pagN_bp').click()
  description = driver.find_elements_by_css_selector("p")
  items = len(description)
  with open(s_csv,'a',encoding="utf-8") as s:
      for i in range(items):
          s.write(description[i].text + '\n')
except NoSuchElementException:
  nextp = 'There is no next button!'
  print(nextp)

推荐阅读