使用硒在网站中输入数据?

发布于 2025-01-30 16:39:47 字数 2397 浏览 3 评论 0原文

我希望每个人都过得愉快... 我的一位客户希望我创建一个将用户输入并将其输入保险车提供商网站的预绘,然后比较结果以找到最佳用户的利率。

我已经为两家公司做了,但是第三个确实很难输入文本,因为它是下拉列表。我输入了文字,但是它没有转到下一页...请帮助我,我为打扰您而道歉!!

代码

from selenium import webdriver
import os
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.common import keys
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait, Select
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.keys import Keys
import time

PATH= "F:\\chromedriver_win32\\chromedriver.exe"

driver = webdriver.Chrome(PATH)
driver.get("")

search = WebDriverWait(driver, 30).until(
    EC.presence_of_element_located((By.ID, "zipcodeInput"))
)
search.send_keys('34997')
search.send_keys(Keys.RETURN)


element1 = driver.find_element_by_css_selector("#tt-fe8cbbe5-688b-40c3-4ce5-fdb588b05559_listbox > div.tt-dataset.tt-dataset-car_year")
drp = Select(element1)
drp.select_by_visible_text("2016")

# element1.send_keys("2016")
# element1.send_keys(Keys.RETURN)

element2 = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.CSS_SELECTOR, "#typeahead-input > div > span.twitter-typeahead > input:nth-child(2)"))
)
element2.send_keys(' BMW')
element2.send_keys(Keys.RETURN)
element3 = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.CSS_SELECTOR, "#typeahead-input > div > span.twitter-typeahead > input:nth-child(2)"))
)
element3.send_keys(' 4-Series')
element3.send_keys(Keys.RETURN)
element4 = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.CSS_SELECTOR, "#typeahead-input > div > span.twitter-typeahead > input:nth-child(2)"))
)
element4.send_keys(' 428i')
element4.send_keys(Keys.RETURN)
time.sleep(10)
element5 = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.CSS_SELECTOR, "#typeahead-input > div > span.twitter-typeahead > input:nth-child(2)"))
)
element5.send_keys(" Grain Coupe")
element5.send_keys(Keys.RETURN)
time.sleep(50)

choose = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.CSS_SELECTOR, "#used_for_work > span"))
)

choose.click()

image

I hope everyone is having a wonderful day...
One of my clients wanted me to create a programe that takes user's input and enters it into the websites of insurance car providers, then compares the results to find the best rate for the user.

I'd already done it for two firms, but the third was really difficult to input the texts because it was a drop down list. I entered the text, but it did not go to the next page... Please assist me, and I apologise for disturbing you!!

CODE

from selenium import webdriver
import os
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.common import keys
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait, Select
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.keys import Keys
import time

PATH= "F:\\chromedriver_win32\\chromedriver.exe"

driver = webdriver.Chrome(PATH)
driver.get("")

search = WebDriverWait(driver, 30).until(
    EC.presence_of_element_located((By.ID, "zipcodeInput"))
)
search.send_keys('34997')
search.send_keys(Keys.RETURN)


element1 = driver.find_element_by_css_selector("#tt-fe8cbbe5-688b-40c3-4ce5-fdb588b05559_listbox > div.tt-dataset.tt-dataset-car_year")
drp = Select(element1)
drp.select_by_visible_text("2016")

# element1.send_keys("2016")
# element1.send_keys(Keys.RETURN)

element2 = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.CSS_SELECTOR, "#typeahead-input > div > span.twitter-typeahead > input:nth-child(2)"))
)
element2.send_keys(' BMW')
element2.send_keys(Keys.RETURN)
element3 = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.CSS_SELECTOR, "#typeahead-input > div > span.twitter-typeahead > input:nth-child(2)"))
)
element3.send_keys(' 4-Series')
element3.send_keys(Keys.RETURN)
element4 = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.CSS_SELECTOR, "#typeahead-input > div > span.twitter-typeahead > input:nth-child(2)"))
)
element4.send_keys(' 428i')
element4.send_keys(Keys.RETURN)
time.sleep(10)
element5 = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.CSS_SELECTOR, "#typeahead-input > div > span.twitter-typeahead > input:nth-child(2)"))
)
element5.send_keys(" Grain Coupe")
element5.send_keys(Keys.RETURN)
time.sleep(50)

choose = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.CSS_SELECTOR, "#used_for_work > span"))
)

choose.click()

Image

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

千纸鹤带着心事 2025-02-06 16:39:47

您不能使用select(element1),因为element1不是选择 node/tag,而是div,即可以使用选择您应该拥有的

<select role="presentation" class="tt-dataset tt-dataset-car_year">

而不是

<div role="presentation" class="tt-dataset tt-dataset-car_year">

要做的是

year = 2016
selection = driver.find_element_by_xpath(f'//div[contains(@class, "tt-dataset-car_year")]/child::div[contains(text(), "{year}")]')
selection.click()

You cannot use Select(element1) because element1 is not a select node/tag but a div, i.e. to be able to use Select you should have

<select role="presentation" class="tt-dataset tt-dataset-car_year">

instead of

<div role="presentation" class="tt-dataset tt-dataset-car_year">

What you have to do is

year = 2016
selection = driver.find_element_by_xpath(f'//div[contains(@class, "tt-dataset-car_year")]/child::div[contains(text(), "{year}")]')
selection.click()
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文