我正在尝试使用硒自动在我的网站上登录。
我正在访问此网站:http://front-desk.fr/users/accounts/login/?next=/
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
chrome_path = r"C:\Users\gaeta\OneDrive\Bureau\chromedriver.exe"
class FrontDesk:
def __init__(self,username,password):
self.username = username
self.password = password
self.bot = webdriver.Chrome(chrome_path)
def login(self):
bot = self.bot
bot.get("http://front-desk.fr/users/accounts/login/")
time.sleep(5)
email = bot.find_element_by_class_name('textinput textInput form-control')
email.send_keys(self.username)
ed = FrontDesk('myemail@gmail.com', 'password1234')
ed.login()
但是发生错误:
selenium.common.exceptions.NoSuchElementException:消息:没有这样的元素:无法找到元素:{“ method”:“ css选择器”,“ selector”:“。textinput textInput 表单控制”}
这是我的网站,所以我确定上课了,我查看了SO,答案是关于Iframe的,我没有。
我尝试过使用class,id等。一切正常,除了不能填充输入内容。
答案 0 :(得分:0)
此错误消息...
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":".textinput textInput form-control"}
...表示 ChromeDriver 在浏览上下文即 Chrome浏览器会话中无法找到所需的元素。>
您需要注意以下几点:
使用find_element_by_class_name()
将无法传递多个类名。传递多个类,您将面临以下错误:
Message: invalid selector: Compound class names not permitted
您可以使用以下CSS_SELECTOR作为有效的选择器:
email = bot.find_element_by_css_selector('input.textinput.textInput.form-control')
但是上面的CSS_SELECTOR不能唯一地标识所需的元素。
要在 Identifiant 字段中发送字符序列,您必须为element_to_be_clickable()
引入 WebDriverWait ,您可以使用以下Locator Strategies中的
使用CSS_SELECTOR
:
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input#id_login"))).send_keys(self.username)
使用XPATH
:
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//input[@id='id_login']"))).send_keys(self.username)
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
您可以在Selenium “selenium.common.exceptions.NoSuchElementException” when using Chrome
中找到有关 NoSuchElementException 的相关详细讨论。答案 1 :(得分:-2)
HTML来源无效,有很多未关闭的标签,例如样式表的标签。修复这些问题,然后重试。