首页 > 解决方案 > 如何从非选择标签的下拉列表中选择一个选项?

问题描述

我正在尝试从下拉菜单中选择一个值。我尝试了很多在这里找到的解决方案,但没有任何效果,有时我有错误无法滚动查看。

代码试验:

import time
from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.select import Select
from selenium.webdriver.common.action_chains import ActionChains

browser = webdriver.Chrome()  # Optional argument, if not specified will search path.
browser.get('https://dzairannonces.com/posts/create');
mySelectElement = browser.find_element_by_id('parentId')
dropDownMenu = Select(mySelectElement)

我想从下拉表单中选择一个值,并从我们选择第一个下拉表单时出现的第二个下拉表单中选择另一个值

我也试过这段代码,但不起作用

import unittest
from selenium import webdriver
from selenium.webdriver.support.select import Select
import time


class Drpdowm(unittest.TestCase):

    def setUp(self):
        self.driver = webdriver.Chrome()

    def test_drpdown(self):
        driver = self.driver
        driver.maximize_window()
        driver.get('https://dzairannonces.com/posts/create')
        time.sleep(10) # Let the user actually see something!
        s1=Select(driver.find_element_by_id('parentId'))

        print(s1.options)


        for opt in s1.options:
            s1.select_by_value(' 315 ')

    def tearDown(self):
        self.driver.quit()

标签: pythonseleniumselenium-webdriverwebdriverwebdriverwait

解决方案


正确的代码是

s1=Select(driver.find_element_by_id('parentId'))
s1.select_by_value('315')

当涉及到额外的空格或换行符时,HTML 属性非常严格,您需要完全按原样提供值

请参阅为使用标签而设计的 Python WebDriver API 的选择支持章节<select>

关于整体测试设计,一个好主意是实现页面对象模型设计模式,它将允许您拆分 UI 和测试逻辑,并使您的测试健壮、可靠且更容易重构。有关详细信息,请参阅页面对象一章。


推荐阅读