python - python 使用 selenium webdriver mouser
问题描述
我正在尝试打开 Mouser 网站并使用搜索栏发送一些数据。这是代码示例,但我无法获得正确的 CSS 选择器。谢谢你。
import time
from openpyxl import load_workbook
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
driver = webdriver.Chrome(executable_path='C:/Users/amuri/AppData/Local/Microsoft/WindowsApps/PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0/site-packages/chromedriver.exe')
driver.implicitly_wait(1)
url ='https://www.mouser.com/'
driver.get(url)
print(driver.title)
wait = WebDriverWait(driver, timeout=1)
wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "#as-input-066 .form-control")))
elem = driver.find_element_by_css_selector("#as-input-066 .form-control")
elem.click()
elem.send_keys("myString")
解决方案
尝试以下css:
.form-control.headerSearchBox.search-input.js-search-autosuggest.as-input
xpath甚至更短:
//input[contains(@id,'as-input')]
解释:它看起来id
包含as-input
另一个建议:改变
wait = WebDriverWait(driver, timeout=1)
至
wait = WebDriverWait(driver, timeout=15)
1 秒太小超时。它应该至少为 10。
推荐阅读
- python - Python:pysftp 异常处理
- javascript - 带视频的 iframe(youtube 和 vimeo)在 safari 中有奇怪的行为
- flutter - Flutter-web:浏览器刷新时提供者状态丢失
- opencv - 在失真的图像上绘制极线
- angular - Angular 2 Reactive Form - 仅在表单脏时显示重置按钮
- docker - 为什么我们需要在 DockerFile 中为 Asp.net 核心提供多个复制指令
- angular - 实现了两个 HTTP 拦截器,但只调用了一个
- spring - 为 MongoDB 配置 Spring 事务支持
- azure-devops - 如何在 Artifactory 中使用 Nuget 依赖项配置 TFS2018 build vb.net
- flutter - Flutter:Android项目的主要Activity