使用 Python 和 Selenium Webdriver 存储动态下拉选项
Store dynamic dropdown options with Python and Selenium Webdriver
我正在尝试存储由邮政编码查找生成的地址值,然后创建一个列表,我可以使用 python 随机模块来 select 使用 random.choice 的随机值
场景:
输入邮政编码,单击 'Search' - 下拉列表动态填充可用选项。
我正在使用字典将我的表单值存储为 xpath,然后使用网络驱动程序 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
一个简单的 '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)
我正在尝试存储由邮政编码查找生成的地址值,然后创建一个列表,我可以使用 python 随机模块来 select 使用 random.choice 的随机值
场景:
输入邮政编码,单击 'Search' - 下拉列表动态填充可用选项。
我正在使用字典将我的表单值存储为 xpath,然后使用网络驱动程序 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
一个简单的 '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)