簡體   English   中英

有人可以幫我弄清楚如何打印此下拉列表中的選項嗎?

[英]Can someone help me figure out how to print the options in this dropdown?

我一直在嘗試使用 selenium 以便我可以在此網頁中列出可用的尺寸選項,但我很難識別 class 元素。 每次我使用 main-size-select-0 時,都會收到一條錯誤消息,提示無法定位元素。 我什至嘗試過使用 xpath 但它也不起作用。

下面是我的代碼:

from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import Select
from bs4 import BeautifulSoup

driver = webdriver.Firefox(executable_path = '/usr/local/bin/geckodriver')
driver.get("https://www.asos.com/nike/nike-air-max-95-logo-leather-trainers-in-dark-navy-orange/prd/20750072?colourwayid=60085113")
select = Select(driver.find_element_by_id("main-size-select-0"));

主要問題之一可能是您的代碼在完全加載之前正在尋找菜單。 您可以使用WebDriverWaitEC來保存代碼,直到加載元素,然后繼續。 如何找到元素並不重要,我使用的是 xpath,但你可以為所欲為。 一旦你得到它, .text方法就會返回你需要的一切。

我在換行符上拆分文本並消除任何缺貨以及列表中的第一項“請選擇”。

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


driver = webdriver.Chrome()
driver.get("https://www.asos.com/nike/nike-air-max-95-logo-leather-trainers-in-dark-navy-orange/prd/20750072?colourwayid=60085113")
WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.XPATH, '//*[@id="main-size-select-0"]')))
dd = driver.find_element_by_xpath( '//*[@id="main-size-select-0"]')

[x for x in dd.text.split('\n') if not any(w in x for w in ['Please','Not'])]

Output

['UK 6',
 'UK 7',
 'UK 7.5',
 'UK 8',
 'UK 8.5',
 'UK 9',
 'UK 9.5',
 'UK 10',
 'UK 10.5',
 'UK 11',
 'UK 12',
 'UK 13']

一些東西...

  1. 列表中的項目加載時間稍晚於頁面加載時間。 我會在你的 driver.get([URL]) 之后放置一個 time.sleep() 或 WebDriverWait。

  2. 要獲取下拉列表中的元素列表,您需要將 xPath 設置為“main-size-select-0”下的“option”標簽。 對於 Chrome,這將是: //*[@id="main-size-select-0"]/option 使用driver.find_element s _by_xpath訪問這些將返回下拉列表中所有項目的列表

總結...

...
import time

driver = webdriver.Firefox(executable_path = '/usr/local/bin/geckodriver')
driver.get("https://www.asos.com/nike/nike-air-max-95-logo-leather-trainers-in-dark-navy-orange/prd/20750072?colourwayid=60085113")
time.sleep(5)
select_list = Select(driver.find_elements_by_xpath("//*[@id="main-size-select-0"]/option"));

請注意,在那里生成的 xPath 是通過 Chrome 完成的。 Firefox 可能略有不同。 只要確保您沒有訪問列表中的特定項目,即: //*[@id="main-size-select-0"]/option[0]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM