Python AttributeError:“tuple”对象没有属性“tag_name”-当我想从Selenium POM中选择下拉列表时

Python AttributeError:“tuple”对象没有属性“tag_name”-当我想从Selenium POM中选择下拉列表时,python,selenium,selenium-webdriver,pycharm,pytest,Python,Selenium,Selenium Webdriver,Pycharm,Pytest,我目前正在尝试使用Selenium中的POM从下拉菜单中选择索引,但出现以下错误。 接下来,我将构建用于按值和可见文本进行选择的函数 先谢谢你 base page.py-这里是我存储一般操作的地方 from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.suppor

我目前正在尝试使用Selenium中的POM从下拉菜单中选择索引,但出现以下错误。 接下来,我将构建用于按值和可见文本进行选择的函数

先谢谢你

base page.py-这里是我存储一般操作的地方

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import Select

class BasePage:
    def __init__(self, driver):
        self.driver = driver

    def do_select_by_index(self, by_locator, index):
        WebDriverWait(self.driver, 10).until(EC.visibility_of_element_located(by_locator))
        Select(by_locator).select_by_index(index)
HeaderPage.py-下面是我想对菜单项执行选择操作的时间

from Pages.BasePage import BasePage
from selenium.webdriver.common.by import By

class Header(BasePage):
    
MENU_SELECT = By.ID, ("Form_submitForm_NoOfEmployees")

    def __init__(self, driver):
        super().__init__(driver)

    def select_menu_index(self):
        self.do_select_by_index(self.MENU_SELECT, 4)
BaseTest-test_base.py

测试\选择-实际测试

试验的实际结果:


我已经用这种方式更改了我在类BasePage中的代码,它可以正常工作

class BasePage:
    def __init__(self, driver):
        self.driver = driver

    def do_select_by_index(self, by_locator, index):
        element = WebDriverWait(self.driver, 10).until(EC.visibility_of_element_located(by_locator))
        Select(element).select_by_index(index)

好的,您已经将MENU_SELECT定义为一个元组,但是SELECT需要一个web元素,所以这是应该的。非常感谢您的帮助。这对我有用。
from Tests.test_base import BaseTest
from Pages.HeaderPage import Header

class Test_Select(BaseTest):

    def test_selectMenu(self):
        self.driver.get("https://www.orangehrm.com/orangehrm-30-day-trial")
        self.header = Header(self.driver)
        self.header.select_menu_index()
self = <Tests.test_1.Test_Select object at 0x0000024B1AD77F70>

    def test_selectMenu(self):
        self.driver.get("https://www.orangehrm.com/orangehrm-30-day-trial")
        self.header = Header(self.driver)
>       self.header.select_menu_index()

Tests\test_1.py:9:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Pages\HeaderPage.py:13: in select_menu_index
    self.do_select_by_index(self.MENU_SELECT, 4)
Pages\BasePage.py:11: in do_select_by_index
    Select(by_locator).select_by_(index)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <selenium.webdriver.support.select.Select object at 0x0000024B1AD8C040>, webelement = ('id', 'Form_submitForm_NoOfEmployees')

    def __init__(self, webelement):
        """
        Constructor. A check is made that the given element is, indeed, a SELECT tag. If it is not,
        then an UnexpectedTagNameException is thrown.

        :Args:
         - webelement - element SELECT element to wrap

        Example:
            from selenium.webdriver.support.ui import Select \n
            Select(driver.find_element_by_tag_name("select")).select_by_index(2)
        """
>       if webelement.tag_name.lower() != "select":
E       AttributeError: 'tuple' object has no attribute 'tag_name'

venv\lib\site-packages\selenium\webdriver\support\select.py:36: AttributeError
======================================================================================================== short test summary info =========================================================================================================
FAILED Tests/test_1.py::Test_Select::test_selectMenu[chrome] - AttributeError: 'tuple' object has no attribute 'tag_name'


class BasePage:
    def __init__(self, driver):
        self.driver = driver

    def do_select_by_index(self, by_locator, index):
        element = WebDriverWait(self.driver, 10).until(EC.visibility_of_element_located(by_locator))
        Select(element).select_by_index(index)