页面对象模式-Webdriverwait问题-python

时间:2019-01-15 10:35:14

标签: python selenium webdriver

我正在学习python和硒。我尝试用Page对象模式创建一个新项目,并且WebdriverWait出现问题,您可以看到我的代码,接下来,我写出错误的产生方式。

页面中的方法:

def testStart(self):
    WebDriverWait(self.driver, 15).until(
        expected_conditions.element_to_be_clickable((By.ID, 
        StartPage.username))
    )
    user = self.driver.find_element(*StartPage.username)
    user.click()

我的测试-只是;)

startPage = StartPage(self.driver)
    startPage.testStart()

和定位符:

username = (By.ID, 'username')

错误:

selenium.common.exceptions.WebDriverException: Message:
invalid argument: 'value' must be a string

当我在以下页面上检查方法时:

def testStart(self):
    WebDriverWait(self.driver, 15).until(
        expected_conditions.element_to_be_clickable((By.ID, 
        *StartPage.username))
    )
    user = self.driver.find_element(*StartPage.username)
    user.click()

我有:

TypeError: find_element() takes from 1 to 3 positional arguments but 4 were given

该如何更改?

1 个答案:

答案 0 :(得分:0)

错误1:

  

selenium.common.exceptions.WebDriverException:消息:   无效的参数:“值”必须为字符串

您的StartPage.username是:username = (By.ID, 'username')

现在,当您使用以下命令等待该元素时:

WebDriverWait(self.driver, 15).until(
    expected_conditions.element_to_be_clickable((By.ID, 
    *StartPage.username))
)

您正在向其传递By对象,而不是ID ...

您可以使用以下方法解决此问题:

WebDriverWait(self.driver, 15).until(
    expected_conditions.element_to_be_clickable(*StartPage.username)
)

或将StartPage.username更改为:username = 'username'并将代码保留在等待中……

有关更多信息,请参见page-objects

希望这对您有帮助!