selenium - 如何修复 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)
解决方案
将 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)
推荐阅读
- javascript - 刷新引导选项卡
- javascript - 仅将调度程序连接到组件而不连接状态
- typo3 - 从 Typo3 中的 CategoryCollection 通过 parentID 获取记录
- reactjs - 使用 React Js 的事件
- reactjs - Redux:调度一个不影响状态的动作
- python - 让烧瓶运行荣誉 app.debug
- sql - 在 SQL 中将 GMT 转换为本地时间
- java - ContextConfigLocation java 配置
- ruby-on-rails - 导轨中的限制出错
- google-apps-script - 如果长时间不使用,Google 表单脚本会在输入电子表格之前执行