如何在selenium python脚本中创建一个循环来选择下拉菜单中的每个选项

2024-05-15 10:20:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我是python的新手,或者是编程。。。目前我有一个python脚本可以在下拉菜单中选择一个选项,但是我希望我的脚本每次都重复并选择下一个选项。下拉列表中有大约50个不同的选项。在

类测试\u createAnonData(unittest.TestCase)公司名称:

def setUp(self):
    self.driver = webdriver.PhantomJS()
    self.driver.get("http://www.webpagetest.org/")

def test_AnonVisit(self):
    driver = self.driver

    l1  = "Hong Kong, China (Chrome, Canary, Firefox)"
    l2  = "Singapore - EC2 (Chrome,IE 11,Firefox,Safari)"
    l3  = "Seoul, Korea (IE 7,8,11,Chrome,Canary,Firefox,Safari)"
    l4  = "Tokyo, Japan (IE 9,Chrome,Firefox)"
    l5  = "Reykjavik, Iceland (IE 11,Chrome,Canary,Firefox)"
    l6  = "Sydney, Australia (IE 7,9,Chrome,Firefox)"
    l7  = "Paris, FR (IE 8, Chrome)"
    l8  = "Stockholm, Sweden (IE 8,Chrome,Firefox,Safari)"
    l9  = "Copenhagen, Denmark (IE 10,Chrome,Firefox)"
    l10 = "Prague, Czech Republic (IE 11,Chrome,Canary,Firefox,Safari)"

    urlTextBox          = "url"
    dropdownOption      = "location"
    submitBtn           = ".//*[@id='start_test-container']/p/input"
    homeBtn             = ".//*[@id='nav']/li[1]/a"

    urlTextBoxElement = WebDriverWait(driver, 10).\
        until(lambda driver: driver.find_element_by_id(urlTextBox))

    dropdownOptionElement = WebDriverWait(driver, 10).\
        until(lambda driver: driver.find_element_by_id(dropdownOption))

    submitBtnElement = WebDriverWait(driver, 10).\
        until(lambda driver: driver.find_element_by_xpath(submitBtn))

    urlTextBoxElement.send_keys(webTeamPage)
    Select(dropdownOptionElement).select_by_visible_text(l1)
    submitBtnElement.click()
    time.sleep(3)
    homeBtnElement = WebDriverWait(driver, 10).\
        until(lambda driver: driver.find_element_by_xpath(homeBtn))
    homeBtnElement.click()

Tags: lambdaselfidby选项driverelementfind
1条回答
网友
1楼 · 发布于 2024-05-15 10:20:32

我能回答我自己的问题,请看下面的脚本:

urlTextBox          = "url"
dropdownOption      = "location"
submitBtn           = ".//*[@id='start_test-container']/p/input"
homeBtn             = ".//*[@id='nav']/li[1]/a"
webTeamPage = "personalwebpage.com"


select = driver.find_element_by_id(dropdownOption)  #get the select element
options = select.find_elements_by_tag_name("option") #get all the options into a list
optionsList = []

for option in options: #iterate over the options, place attribute value in list

    optionsList.append(option.get_attribute("value"))


for optionValue in optionsList:

    urlTextBoxElement = WebDriverWait(driver, 10).\
        until(lambda driver: driver.find_element_by_id(urlTextBox))

    dropdownOptionElement = WebDriverWait(driver, 10).\
        until(lambda driver: driver.find_element_by_id(dropdownOption))

    submitBtnElement = WebDriverWait(driver, 10).\
        until(lambda driver: driver.find_element_by_xpath(submitBtn))

    driver.find_element_by_id(urlTextBox).clear()
    urlTextBoxElement.send_keys(webTeamPage)
    submitBtnElement.click()
    time.sleep(3)
    homeBtnElement = WebDriverWait(driver, 10).\
    until(lambda driver: driver.find_element_by_xpath(homeBtn))
    homeBtnElement.click()
    print "starting loop on option %s" % optionValue


    select = Select(driver.find_element_by_id(dropdownOption))
    select.select_by_value(optionValue)

相关问题 更多 >