如何用 selenium 对 flipkart 进行排序 python

How to sort flipkart with selenium python

我想按受欢迎程度对 flipkart 产品进行排序,但找不到方法

>span class="_2i7N3j">Sort By</span\
>span class="_2i7N3j">Relevance</span\
>span class="_2i7N3j">Popularity</span 

我要点击人气

所有选项都有相同的 class 并且没有 id 我也试过 link_text 但它没有用 有人可以帮忙

这是我写的代码

from selenium import webdriver
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
import time

product = input("Which product review you want: ").lower()
print(f"Best {product} in your range from famous website")

PATH = "C:\Program Files (x86)\chromedriver.exe"
driver = webdriver.Chrome(PATH)

try:
    driver.get("https://www.flipkart.com/")
    search = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.NAME,"q"))
    )
    search.send_keys(product)
    search.send_keys(Keys.ENTER)
    pop = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.XPATH("//div[contains(text(), 'Popularity')]")))
    )
    pop.click()
    print(driver.current_url)
    time.sleep(2)

finally:
    time.sleep(2)
    driver.quit()

您可以这样点击:

from selenium import webdriver
import time

browser = webdriver.Chrome()
browser.get(r"https://www.flipkart.com/search?q=laptop&otracker=search&otracker1=search&marketplace=FLIPKART&as-show=off&as=off")
time.sleep(3)
popularity_button = browser.find_element_by_xpath("//div[contains(text(), 'Popularity')]")
popularity_button.click()

class这个名字以后很可能会变,所以找正文会比较靠谱。