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

时间:2015-01-12 20:00:32

标签: python selenium xpath selenium-webdriver webdriver

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

情景:

输入邮政编码,点击'搜索' - 下拉列表使用可用选项动态填充。

我使用字典将表单值存储为xpath,然后使用webdriver将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一个简单的问题'错过了'元素'把我扔了一会儿。

1 个答案:

答案 0 :(得分:1)

使用python selenium bindings提供的Select类开箱即用 - 它是select->option HTML结构上的一个很好的抽象层:

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)