python-3.x 如何识别和类型在搜索栏 selenium

irtuqstp  于 2023-01-03  发布在  Python
关注(0)|答案(2)|浏览(114)

我正在尝试在搜索栏中输入,如Sprouts中的图片所示。我尝试了许多不同的迭代,但无法在搜索栏中输入。我做错了什么?

代码:

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

options = webdriver.ChromeOptions()
website = webdriver.Chrome(executable_path='/Users/myPath/chromedriver',options = options)
sprouts         = {"url" : "https://shop.sprouts.com/"}
website.get(sprouts['url'])

search_bar = website.find_element(By.CSS_SELECTOR,"css-4hd4ug")
search_bar.send_keys("bananas")
search_bar.send_keys(Keys.RETURN)
rjee0c15

rjee0c151#

首先,选择类的语法是在类名前使用点(.),因此:

.css-4hd4ug

其次,有多个该类,因此,我将使用直接从chrome #sticky-react-header > div > div.css-q1n3l > div.css-c1jgn7 > form > div > input复制的CSS选择器。
第三,元素显示需要时间,因此应使用presence_of_element_located。请参见:* 一个月一次 *

search_bar = WebDriverWait(website, 20).until(
EC.presence_of_element_located((By.CSS_SELECTOR, "#sticky-react-header > div > div.css-q1n3l > div.css-c1jgn7 > form > div > input"))
)

使用您的代码时,应将其重构为:

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium import webdriver

options = webdriver.ChromeOptions()
website = webdriver.Chrome()
sprouts = {"url": "https://shop.sprouts.com/"}
website.get(sprouts["url"])

search_bar = WebDriverWait(website, 20).until(
    EC.presence_of_element_located(
        (
            By.CSS_SELECTOR,
            "#sticky-react-header > div > div.css-q1n3l > div.css-c1jgn7 > form > div > input",
        )
    )
)

search_bar.click()
search_bar.send_keys("bananas")
qv7cva1a

qv7cva1a2#

您可以使用下面的XPATH在搜索栏中输入值:

search_bar = website.find_element(By.XPATH,".//*[@class='css-1nxa74h']/input")

或者使用下面的CSS_SELECTOR:

search_bar = website.find_element(By.CSS_SELECTOR,".css-1nxa74h input")

相关问题