我正在学习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
该如何更改?
答案 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。
希望这对您有帮助!