我想知道如何通过所有的下拉列表,得到价格和变化名称。我可以通过name属性来实现这一点,但是不同的产品页面有不同的属性,所以这不是最佳实践。我使用select by element id完成了这段代码,但收到了下面的错误。我也在试图找出如何复制到csv的这一点,但似乎没有工作。
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
from selenium import webdriver
import csv
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import Select
from selenium.webdriver.support.select import Select
from selenium.webdriver.support.select import Select
from selenium.webdriver import Chrome
import itertools
from pprint import pformat
url = "https://www.ebay.co.uk/itm/Pashmina-Scarf-100-Viscose-Plain-Wrap-Shawl-Stole-Scarf-Many-Colours-Available/252342060680"
browser.get(url)
optionones = len(browser.find_elements_by_xpath("//select[@id='msku-sel-1']/option"))
for colNum in range(optionones):
#select color
optiononeEle = browser.find_element_by_xpath("(//select[id='msku-sel-1']/option)[" + str(colNum+1) + "]")
optionone = optiononeEle.text
optiononeEle.click()
# get the sizes
sizes = len(browser.find_elements_by_xpath("//select[id='msku-sel-2']/option"))
for sizeNum in range(sizes):
# select optionone
optiontwoEle = browser.find_element_by_xpath("(//select[id='msku-sel-2']/option)[" + str(sizeNum + 1) + "]")
size = optiontwoEle.text
optiontwoEle.click()
price = browser.find_element_by_xpath("//span[@id='prcIsum']").text
print ("optionone:" + optionone)
print( "optiontwoEle:" + optiontwoEle)
print("Price: "+ price)
print ("----------------------------------------")
Traceback (most recent call last):
File "C:/Users/userman/PycharmProjects/seleniumTest/test/test310.py", line 30, in <module>
optiononeEle = browser.find_element_by_xpath("(//select[id='msku-sel-1']/option)[" + str(colNum+1) + "]")
File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 394, in find_element_by_xpath
return self.find_element(by=By.XPATH, value=xpath)
File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 978, in find_element
'value': value})['value']
File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 321, in execute
self.error_handler.check_response(response)
File "C:\Python27\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"(//select[id='msku-sel-1']/option)[1]"}
Process finished with exit code 1