AttributeError:“MainPage”对象没有属性“find_element”

问题描述 投票:0回答:1

我在 selenium Python 上进行了这个测试:

import pytest
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from pages.main_page import MainPage

def test_click_account(main_page):
    main_page.click_account()

“main_page.click_account()”正在从我的main_page执行此def:

import time
from selenium.webdriver.common.by import By
from .base_page import BasePage

class MainPage(BasePage):
     
    def click_account(self):
        ACCOUNT_LINK = (By.XPATH, "//li[3]/a/span")
        self.assert_boton_visible()
        self.click(ACCOUNT_LINK)

“self.assert_boton_visible()”正在从我的main_page执行此代码:

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

class BasePage:

    def assert_boton_visible(self):
        element = self.find_element("xpath", "//li[3]/a/span")
        assert element.is_displayed()

执行测试时,我收到此错误:AttributeError: 'MainPage' object has no attribute 'find_element'

我做错了什么?我正在尝试进行断言检查是否显示具有该 xpath 的元素

python selenium-webdriver
1个回答
0
投票

在此代码中:

class BasePage:
    def assert_boton_visible(self):
        element = self.find_element("xpath", "//li[3]/a/span")
        assert element.is_displayed()

BasePage
只是一个通用对象。 因此,除非您定义了方法
find_element
,否则它不存在并且不会被
MainPage
继承。

我的猜测是,您可能在此处未显示的

__init__
方法中的某个位置定义了 Web 驱动程序。 在这种情况下,您需要引用该对象才能使用 selenium
find_element
方法。

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

    def assert_boton_visible(self):
        element = self.driver.find_element("xpath", "//li[3]/a/span")
        assert element.is_displayed()
© www.soinside.com 2019 - 2024. All rights reserved.