尝试使用 SELENIUM 查找元素时出错

Error when trying to find an element using SELENIUM

希望有人能帮助我。

我的目标是使用 Python(Selenium + Chromedriver)成功连接到 this 网站,并在搜索栏中成功搜索地址。我正在努力设法使用 Selenium 找到实际的搜索栏本身。 HTML 代码没有 ID 或 NAME 来区分它,它只有一个 class,当我搜索 class 时,我收到一条错误消息说它不能找到了。

希望这是一个简单的修复,我只是在犯傻。非常感谢。

P.S 首先 post - 请给出一些关于下次更改内容的提示 :)

代码

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

PATH = "C:\Program Files (x86)\chromedriver.exe"
driver = webdriver.Chrome(PATH)

driver.get("https://creeper.banano.cc/")
search = driver.find_element_by_class_name("ValidatedSearch form-control form-control-lg ")

错误代码

NoSuchElementException: no such element: Unable to locate element: {"method":"css selector","selector":".ValidatedSearch form-control form-control-lg "}

Python Code + HTML of Website

此处的错误是您在一个函数中有多个 class 名称,但只需要一个。 ValidatedSearchform-controlform-control-lg 是不同的 classes,因为 classes 中不能有空格。所以你要找的是这个:

search = driver.find_element_by_class_name("ValidatedSearch")

这针对它找到的 ValidatedSearch class 中的第一个标签。

我能够使用它

search = driver.find_element_by_class_name("ValidatedSearch")
search.send_keys("Hi My Name is Slicka Slicka Slim Shady")

我用了一个 class。我会说 Selenium iirc 只需要一个 class。我也不是主要的网页设计师,但今天遍布的这些框架几乎添加了额外的东西很烦人。当我创建 Selenium 脚本时,我越来越多地使用 xpaths。你可能想看看那个

验证搜索 form-control form-control-lg

就是所谓的多个class名字。

为了找到我们使用 css 选择器的元素。

driver.find_element(By.CSS_SELECTOR,".ValidatedSearch.form-control.form-control-lg")

也不要使用 driver.find_element_by,因为它们已折旧,而是导入并使用它。