python - 有人可以帮我弄清楚如何打印此下拉列表中的选项吗?
问题描述
我一直在尝试使用 selenium,因此我可以在此网页中列出可用的大小选项,但我很难识别类元素。每次我使用 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"));
解决方案
主要问题之一可能是您的代码在完全加载之前正在寻找菜单。您可以使用WebDriverWait
和EC
保存代码,直到加载元素,然后继续。你如何找到元素并不重要,我使用了 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'])]
输出
['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']
推荐阅读
- java - Spring + MongoDB - MongoTemplate + Criteria 查询
- python - 无法使用 python + h5py 访问外部链接
- javascript - 如何显示 histogramSlider jquery 插件的 x 轴和 y 轴?
- python - 如何填充和访问 Django ArrayField?
- r - 对列进行分组并创建列表输出
- java - 将 Class 的对象转换为 Map
- javascript - 输入 | 将 JavaScript 函数设置的新值获取到 Controller 公共函数中
- xamarin.forms - Xamarin 形成 SFListview 多选问题
- laravel - Laravel 关系上的枢轴关系 (Eloquent)
- api - GoKit 和生成微服务安装协议错误