我正在尝试在我的自动测试中实现 POM 模型,但我在将定位器分离到另一个文件时遇到了问题。我用这个作为指南 https://selenium-python.readthedocs.io/page-objects.html我的页面对象from Locators.Sites.SitesLocators import SitesLocatorsclass ResetPasswordFirstForm(object): def __init__(self, driver): self.driver = driver self.wait = WebDriverWait(self.driver, 20) def button_go_to_reset_passwrod(self): self.driver.find_element(*SitesLocators.button_go_to_reset_password).click() def button_submit_form(self): self.driver.find_element(*SitesLocators.button_submit_reset_password).click()我的定位器class SitesLocators(object): button_go_to_reset_password = (By.CSS_SELECTOR, "a[href='#/reset-password']") button_submit_reset_password = (By.CSS_SELECTOR, "[ng-click='send()']")但我收到这个错误TypeError: __init__() takes 2 positional arguments but 3 were given分离我的定位器并正确使用它们的最佳方法是什么?
1 回答
紫衣仙女
TA贡献1839条经验 获得超15个赞
正如我所看到的错误:
TypeError: init () 需要 2 个位置参数,但给出了 3 个
意味着您需要向 中添加第三个参数__init()__:
这是您当前的__init()__:
def __init__(self, driver):
self.driver = driver
self.wait = WebDriverWait(self.driver, 20)
正如您在问题中引用的selenium 页面对象,您可以在此处看到它们有第三个参数(尽管并不总是使用 see owner)。
所以只需添加第三个它就可以解决问题!
正如你在这里看到的:
def __get__(self, obj, owner):
"""Gets the text of the specified object"""
driver = obj.driver
WebDriverWait(driver, 100).until(
lambda driver: driver.find_element_by_name(self.locator))
element = driver.find_element_by_name(self.locator)
return element.get_attribute("value")
希望这对你有帮助!
添加回答
举报
0/150
提交
取消