首页 > 解决方案 > 我正在尝试在 python 中使用 Selenium 在 youtube 上搜索关键字

问题描述

我是硒的新手,我只是在探索。我试图在 python 中使用 Selenium 在 youtube 上搜索关键字。我遇到了一些错误。

这是代码

from selenium import webdriver
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait

driver = webdriver.Chrome("C:/Users/aksch/Downloads/chromedriver_win32/chromedriver.exe")

driver.get("https://youtube.com")
searchBox = driver.find_element_by_xpath("//*[@id=\"search\"]")
searchButton = driver.find_element_by_xpath("//*[@id=\"search-icon-legacy\"]")

try:
    WebDriverWait(driver, 5).until(EC.presence_of_element_located(searchBox))
except TimeoutException:
    print("Timed out waiting for page to load")

searchBox.send_keys("Something")
searchButton.click()

这就是错误

C:\Users\aksch\AppData\Local\Programs\Python\Python38-32\python.exe C:/Users/aksch/PycharmProjects/pythonProject/main.py
Traceback (most recent call last):
  File "C:/Users/aksch/PycharmProjects/pythonProject/main.py", line 13, in <module>
    WebDriverWait(driver, 5).until(EC.presence_of_element_located(searchBox))
  File "C:\Users\aksch\AppData\Local\Programs\Python\Python38-32\lib\site-packages\selenium\webdriver\support\wait.py", line 71, in until
    value = method(self._driver)
  File "C:\Users\aksch\AppData\Local\Programs\Python\Python38-32\lib\site-packages\selenium\webdriver\support\expected_conditions.py", line 64, in __call__
    return _find_element(driver, self.locator)
  File "C:\Users\aksch\AppData\Local\Programs\Python\Python38-32\lib\site-packages\selenium\webdriver\support\expected_conditions.py", line 411, in _find_element
    return driver.find_element(*by)
TypeError: find_element() argument after * must be an iterable, not WebElement

Process finished with exit code 1

标签: pythonseleniumselenium-webdriver

解决方案


下面的代码应该适合你..预期条件的语法发生了变化,所以它将输入作为定位器类型和定位器

检查输入框的定位器它没有找到我也已更正

from selenium import webdriver
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.common.by import By

driver = webdriver.Chrome("C:/Users///chromedriver.exe")

driver.get("https://youtube.com")
driver.maximize_window()
searchBox = driver.find_element_by_css_selector("#search-form #container input")
searchButton = driver.find_element_by_id("search-icon-legacy")

try:
     WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "#search-form #container input")))
except TimeoutException:
     print("Timed out waiting for page to load")


searchBox.send_keys("Something")
searchButton.click()

推荐阅读