selenium 不希望网站进入第 3 页

selenium doesn't want the website to get to the 3rd page

每当我想要 selenium 为我按​​下 enter 时,它不想,进入下一页。 代码有问题吗?

from selenium import webdriver
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
from selenium.webdriver.support import expected_conditions as EC


from selenium.webdriver.common.keys import Keys
import time
PATH = "C:\Pro\chromedriver.exe"
driver = webdriver.Chrome(PATH)
driver.get("https://insurify.com")
try:
    search = WebDriverWait(driver, 30).until(
        EC.presence_of_element_located((By.ID, "zipcodeInput"))
    )
    search.send_keys('34997')
    search.send_keys(Keys.RETURN)
    element1 = WebDriverWait(driver, 30).until(
        EC.presence_of_element_located((By.CSS_SELECTOR, "#typeahead-input > div > span > input:nth-child(2)"))
    )
    element1.send_keys("2016")
    element1.send_keys(Keys.RETURN)
    time.sleep(30)
    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(50)


except:
    driver.quit

还有代码最后一次执行的图片

通过运行 driver.implicitly_wait(30)紧跟在driver的定义之后,我们可以去掉所有的命令WebDriverWait(driver, 30).until(EC.presence_of_element_located((...)))。此外,通过正确使用 find_element()click() 我们可以替换代码块,例如

element1 = WebDriverWait(driver, 30).until(EC.presence_of_element_located((By.CSS_SELECTOR, "#typeahead-input > div > span > input:nth-child(2)")))
element1.send_keys("2016")
element1.send_keys(Keys.RETURN)

用一行命令。最终代码为

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service

driver = webdriver.Chrome(service=Service(your_chromedriver_path))

driver.implicitly_wait(30)
driver.get("https://insurify.com")

driver.find_element(By.CSS_SELECTOR, '#zipcodeInput').send_keys('34997')
driver.find_element(By.XPATH, '//button[text()="View my quotes"]').click()

driver.find_element(By.XPATH, '//div[text() = "2016"]').click()
driver.find_element(By.XPATH, '//span[text()="BMW"]').click()
driver.find_element(By.XPATH, '//div[text()="4-Series"]').click()
driver.find_element(By.XPATH, '//div[text() = "428i"]').click()