Python AttributeError:“tuple”对象没有属性“tag_name”-当我想从Selenium POM中选择下拉列表时
我目前正在尝试使用Selenium中的POM从下拉菜单中选择索引,但出现以下错误。 接下来,我将构建用于按值和可见文本进行选择的函数 先谢谢你 base page.py-这里是我存储一般操作的地方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
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)