我正在尝试在eBay上输出下拉菜单的文本。我要输出文本,然后选择不同的下拉选项来选择价格(这就是为什么我不想一次全部刮取下拉值列表的原因)。我有一个仅适用于1个下拉框和价格的代码。我希望它可以与2个下拉菜单+一起使用。
from selenium import webdriver
import csv
browser = webdriver.Chrome(executable_path='C:\Users\user\PycharmProjects\seleniumTest\drivers\chromedriver.exe')
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import Select
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
from selenium.webdriver.support.select import Select
from selenium import webdriver
import csv
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import Select
browser.get('https://www.ebay.co.uk/itm/Wooden-Box-Coins-Coin-Capsules-Display-Storage-Case-for-Collectible-50-100-New/392274824564')
from selenium.webdriver.support.select import Select
sel = Select(browser.find_element_by_xpath("//select[@id='msku-sel-1']"))
for index in range(1, len(sel.options)):
# skipping index 0 because it is not valid option
sel.select_by_index(index)
print("{}: {}".format(sel.first_selected_option.text, browser.find_element_by_xpath("//span[@id='prcIsum']").text))
输出=
S: £6.35
L: £10.25
from selenium import webdriver
import csv
browser = webdriver.Chrome(executable_path='C:\Users\userman\PycharmProjects\seleniumTest\drivers\chromedriver.exe')
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import Select
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
from selenium.webdriver.support.select import Select
browser.get('https://www.ebay.co.uk/itm/Men-3D-Print-Summer-Short-Sleeve-Casual-Slim-Fit-T-Shirts-Graphic-Tee-Shirt-Tops/312545780841?_trkparms=aid%3D333200%26algo%3DCOMP.MBE%26ao%3D1%26asc%3D20171012094517%26meid%3D5e2ad1383afb40b6ad90bb05a8161ad3%26pid%3D100008%26rk%3D2%26rkt%3D12%26sd%3D183776732599%26itm%3D312545780841&_trksid=p2047675.c100008.m2219')
sel = Select(browser.find_element_by_xpath("//select[@id='msku-sel-1']"))
selx = Select(browser.find_element_by_xpath("//select[@id='msku-sel-2']"))
for index in range(1, len(sel.options)):
# skipping index 0 because it is not valid option
sel.select_by_index(index)
print("{}: {}".format(sel.first_selected_option.text, browser.find_element_by_xpath("//span[@id='prcIsum']").text))
for index in range(1, len(selx.options)):
# skipping index 0 because it is not valid option
selx.select_by_index(index) & sel.select_by_index(index)
print("{}: {}".format(selx.first_selected_option.text, browser.find_element_by_xpath("//span[@id='prcIsum']").text),browser.find_element_by_xpath("//select[@id='msku-sel-2']").text)
Traceback (most recent call last):
File "C:/Users/userman/PycharmProjects/seleniumTest/test/test310.py", line 27, in <module>
selx.select_by_index(index) & sel.select_by_index(index)
TypeError: unsupported operand type(s) for &: 'NoneType' and 'NoneType'
https://www.ebay.co.uk/itm/UK-Women-Off-Shoulder-Floral-Bodycon-Backless-Ladies-Summer-Beach-Midi-Sun-Dress/254198776097?hash=item3b2f6d8121:m:m9B15WsfVx5zTh_73LlzBGA 我希望输出为例如颜色:红色,尺寸:S价格:£24.99
答案 0 :(得分:0)
这是将打印所需输出的逻辑。
url = "https://www.ebay.co.uk/itm/UK-Women-Off-Shoulder-Floral-Bodycon-Backless-Ladies-Summer-Beach-Midi-Sun-Dress/254198776097?hash=item3b2f6d8121:m:m9B15WsfVx5zTh_73LlzBGA"
driver.get(url)
colors = len(driver.find_elements_by_xpath("//select[@name='Colour']/option"))
for colNum in range(colors):
#select color
colorEle = driver.find_element_by_xpath("(//select[@name='Colour']/option)[" + str(colNum+1) + "]")
color = colorEle.text
colorEle.click()
# get the sizes
sizes = len(driver.find_elements_by_xpath("//select[@name='Size']/option"))
for sizeNum in range(sizes):
# select color
sizeEle = driver.find_element_by_xpath("(//select[@name='Size']/option)[" + str(sizeNum + 1) + "]")
size = sizeEle.text
sizeEle.click()
price = driver.find_element_by_xpath("//span[@id='prcIsum']").text
print ("Color:" + color)
print( "size:" + size)
print("Price: "+ price)
print ("----------------------------------------")
以下是输出:
颜色:-选择- 大小:-选择-
颜色:-选择- 大小:6
颜色:-选择- 大小:8
颜色:-选择- 大小:10
颜色:-选择- 大小:12
颜色:-选择- 大小:14
颜色:-选择- 大小:16
颜色:-选择- 大小:S
颜色:-选择- 尺寸:M
颜色:-选择- 大小:L
颜色:-选择- 尺寸:XL
颜色:白色 大小:-选择-
颜色:白色 大小:6
颜色:白色 大小:8
颜色:白色 大小:10
颜色:白色 大小:12
颜色:白色 大小:14
颜色:白色 大小:16
颜色:白色 大小:S
颜色:白色 尺寸:M
颜色:白色 大小:L
颜色:白色 尺寸:XL
颜色:蓝色 大小:-选择-
颜色:蓝色 大小:6
颜色:蓝色 大小:8
颜色:蓝色 大小:10
颜色:蓝色 大小:12
颜色:蓝色 大小:14
颜色:蓝色 大小:16
颜色:蓝色 大小:S
颜色:蓝色 尺寸:M
颜色:蓝色 大小:L
颜色:蓝色 尺寸:XL
颜色:浅绿色 大小:-选择-
颜色:浅绿色 大小:6
颜色:浅绿色 大小:8
颜色:浅绿色 大小:10
颜色:浅绿色 大小:12
颜色:浅绿色 大小:14
颜色:浅绿色 大小:16
颜色:浅绿色 大小:S
颜色:浅绿色 尺寸:M
颜色:浅绿色 大小:L
颜色:浅绿色 尺寸:XL
答案 1 :(得分:0)
@cod eisfun1234,您可以如下使用options:
for sel_opt,selx_opt in zip(sel.options,selx.options):
if "Select" not in sel_opt.text:
print("{}, {}: {}".format(sel_opt.text,selx_opt.text, browser.find_element_by_xpath("//span[@id='prcIsum']").text))
以下是输出:
# 1 Lion, M: £7.49
# 2 Lion, L: £7.49
# 3 Lion, XL: £7.49
Wolf, XXL: £7.49
Deer, XXXL: £7.49
希望这会有所帮助!