使用 Python 和 Selenium Webdriver 存储动态下拉选项

Store dynamic dropdown options with Python and Selenium Webdriver

我正在尝试存储由邮政编码查找生成的地址值,然后创建一个列表,我可以使用 python 随机模块来 select 使用 random.choice 的随机值

场景:

输入邮政编码,单击 'Search' - 下拉列表动态填充可用选项。

我正在使用字典将我的表单值存储为 xpath,然后使用网络驱动程序 find_elements_by_xpathfind_element_by_xpath

代码看起来像这样(格式不正确,仅供参考):

__author__ = 'scott'

from selenium import webdriver
import random

driver = webdriver.Firefox()
driver.maximize_window()
driver.get('https://www.somerandomsite')

formFields = {'postcode' : "//INPUT[@id='postcode']",
        'county' : "//SELECT[@id='address']/option"}

pcList = ['BD23 1DN', 'BD20 0JZ']

#picks a random postcode from pcList#
driver.find_element_by_xpath(formFields['postcode']).send_keys(random.choice(pcList))

driver.find_elements_by_xpath(formFields['county'])

#####now need to store the values from county and select a random option from the list######

driver.close()

在我的邮政编码上使用随机模块没有问题。

如果有人能给我一些指导或指出我参考的方向,我将不胜感激 - 我只是 Selenium 的菜鸟,并且 Python - 取得了稳步进展,但似乎还在继续在这个问题上绕圈子 - 我的第一个问题是使用 find_element_by_xpath 一个简单的 's' 丢失 'element' 让我有一段时间了。

使用 python selenium 绑定提供的 Select class 开箱即用 - 它是 select->option [=16 之上的一个很好的抽象层=]结构:

from selenium.webdriver.support.ui import Select

# initialize the select instance
select = Select(driver.find_element_by_id('address'))

# get the list of options and choose a random one
options = [o.text for o in select.options]
option = random.choice(options)

# select it
select.select_by_visible_text(option)