SeldomQA / poium

Page Objects design pattern test library, support selenium、appium、playwright, etc
https://pypi.org/project/poium
Apache License 2.0
404 stars 138 forks source link

page方法里面生成的动态pagelement提示没有click方法 #4

Closed KevinChan168 closed 3 months ago

KevinChan168 commented 5 years ago

page:

from poium import Page, PageElement

class WebviewHomePage(Page): def get_middle_elements(self): elements = [] lists = [“首页”,“热门”,“女装”] for i in lists:
elements.append(PageElement(xpath=f'//div[contains(@id, "quick-entrance-3")]/descendant::div[text()="{i}"]')) return elements

test:

class TestMallHomepage(): def test_middle_items(self, driver, logger): webviewhomepage = WebviewHomePage(driver) mid_elements = webviewhomepage.get_middle_elements() for element in mid_elements: element.click()

跑的时候提示:

      element.click()

E AttributeError: 'PageElement' object has no attribute 'click'

test_homepage.py:64: AttributeError

defnngj commented 5 years ago

建议不要用 for 循环定义 元素。建议修改代码如下:

from poium import Page, PageElement

class WebviewHomePage(Page):

    def get_middle_elements(self):
        index = PageElement(
            xpath='//div[contains(@id, "quick-entrance-3")]/descendant::div[text()="首页"]')
        hot = PageElement(
            xpath='//div[contains(@id, "quick-entrance-3")]/descendant::div[text()="热门"]')
        dress = PageElement(
            xpath='//div[contains(@id, "quick-entrance-3")]/descendant::div[text()="女装"]')

class TestMallHomepage():

    def test_middle_items(self, driver, logger):
        webviewhomepage = WebviewHomePage(driver)
        webviewhomepage.index.click()
        webviewhomepage.hot.click()
        webviewhomepage.dress.click()