我试图存储由邮政编码查找生成的地址值,然后创建一个列表,我可以使用python随机模块使用random.choice选择随机值
情景:
输入邮政编码,点击'搜索' - 下拉列表使用可用选项动态填充。
我使用字典将表单值存储为xpath,然后使用webdriver将find_elements_by_xpath
或find_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
一个简单的问题'错过了'元素'把我扔了一会儿。
答案 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)