我在 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 的元素
在此代码中:
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()