python - 找不到按类名 selenium 的按钮
问题描述
我正在尝试登录https://ok.ru/
我无法通过 css 选择器或 classname 找到按钮。我想点击按钮
我的代码返回错误
消息:没有这样的元素:无法找到元素:{"method":"css selector","selector":".button-pro __wide"}
from selenium import webdriver
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
driver = webdriver.Chrome(executable_path='chromedriver')
def login(email, password):
driver.get(BASE_URL)
driver.find_element_by_id('field_email').send_keys(email)
driver.find_element_by_id('field_password').send_keys(password)
driver.find_element_by_class_name('button-pro __wide').click()
login(email, password)
调试细节
<ipython-input-19-30d48e0af276> in login(email, password)
6 driver.find_element_by_id('field_email').send_keys(email)
7 driver.find_element_by_id('field_password').send_keys(password)
----> 8 driver.find_element_by_css_selector('button-pro __wide.button-pro __wide').click()
9
10 login(email, password)
~/anaconda3/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py in find_element_by_css_selector(self, css_selector)
596 element = driver.find_element_by_css_selector('#foo')
597 """
--> 598 return self.find_element(by=By.CSS_SELECTOR, value=css_selector)
599
600 def find_elements_by_css_selector(self, css_selector):
~/anaconda3/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py in find_element(self, by, value)
976 return self.execute(Command.FIND_ELEMENT, {
977 'using': by,
--> 978 'value': value})['value']
979
980 def find_elements(self, by=By.ID, value=None):
~/anaconda3/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py in execute(self, driver_command, params)
319 response = self.command_executor.execute(driver_command, params)
320 if response:
--> 321 self.error_handler.check_response(response)
322 response['value'] = self._unwrap_value(
323 response.get('value', None))
~/anaconda3/lib/python3.7/site-packages/selenium/webdriver/remote/errorhandler.py in check_response(self, response)
240 alert_text = value['alert'].get('text')
241 raise exception_class(message, screen, stacktrace, alert_text)
--> 242 raise exception_class(message, screen, stacktrace)
243
244 def _value_or_default(self, obj, key, default):
NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":"button-pro __wide.button-pro __wide"}
(Session info: chrome=85.0.4183.102)
PS 我知道我可以使用 xpath,但我需要使用相同类名或 id 等的可靠方法
解决方案
推荐阅读
- javascript - 当用户单击javascript中的其他元素时如何停止播放视频
- ethereum - 是否可以直接从 etherscan 重新映射
- php - 目标类 [PageController] 不存在,在 laravel
- html - React 应用程序中的复杂组件分层/更新
- html - 如何在component.ts Angular中从html更改this.random_variable的值
- android - 如何使用flutter DataTable类实现单选功能
- angular - Angular Universal 中的 API/http-request 在 Docker Image 中抛出“404 not found”
- c# - 如何处理对成功和失败有不同响应类型的 WEB API?
- reactjs - 尝试访问 Flask API 时出现 CORS 错误
- python - 计算变量的总深度