python - 我正在尝试在 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
解决方案
下面的代码应该适合你..预期条件的语法发生了变化,所以它将输入作为定位器类型和定位器
检查输入框的定位器它没有找到我也已更正
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()
推荐阅读
- python-3.x - 有没有办法在烧瓶框架上使用 python 从本地目录中提取所有图像并在 html 图片库网页上显示图像?
- module - 在引导期间加载内核模块,无需 /etc/modules 条目
- c - 如何在C中的队列中存储(x,y)坐标
- python - 如何获取对象所在的地图键?
- ios - UITextView 在滚动时不显示全文
- objective-c - 如何将一个 Xcode 项目从 GitHub 导入我的 Xcode 项目?
- sql - Postgres jsonb 列从字符串匹配通配符的数组中选择
- javascript - fabricJS中的多种文本颜色
- html - 为什么使用 CSS 的动画背景会波动?
- ios - 如何在 Alamofire 请求中将表单原始数据作为参数发布?