Ria*_*ani 4 python selenium webdriver selenium-webdriver
我想在Python Webdriver中单击元素时使用WebdriverWait.使用WebdriverWait时出现以下TimeoutException错误:
Traceback (most recent call last):
File "C:\Users\riaz.ladhani\PycharmProjects\Selenium Webdriver\ClearCore\TestCases\AdministrationPage_TestCase.py", line 30, in test_add_Project
administration_page = login_page.clickAdministration()
File "C:\Users\riaz.ladhani\PycharmProjects\Selenium Webdriver\ClearCore\Pages\login.py", line 46, in clickAdministration
WebDriverWait (self.driver, 10).until(lambda d: self.driver.find_element(*MainPageLocators.AdministrationButton_xpath).click())
File "C:\Python27\lib\site-packages\selenium\webdriver\support\wait.py", line 75, in until
raise TimeoutException(message, screen, stacktrace)
TimeoutException: Message:
Run Code Online (Sandbox Code Playgroud)
如果我使用time.sleep(10)它工作正常并单击元素.我暂时将所有链接恢复到time.sleep,直到我可以WebdriverWait正常工作.
我的WebdriverWait代码片段是:
class LoginPage(BasePage):
#Click Administration from top menu
def clickAdministration(self):
WebDriverWait (self.driver, 10).until(lambda d: self.driver.find_element(*MainPageLocators.AdministrationButton_xpath).click())
#time.sleep(10)
return AdministrationPage(self.driver)
Run Code Online (Sandbox Code Playgroud)
进口是:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.common.exceptions import TimeoutException
class LoginPage_TestCase(unittest.TestCase):
def test_add_Project(self):
login_page = login.LoginPage(self.driver)
login_page.userLogin_valid()
administration_page = login_page.clickAdministration()
Run Code Online (Sandbox Code Playgroud)
我的WebdriverWait语法是否正确?为什么TimeoutException?
如果我使用time.sleep(secs)它,它工作正常但不是最有效的方法.
ale*_*cxe 12
您没有正确使用显式等待 - 您需要使用预期条件 - 在返回之前将重复调用的callables True.你返回的click()方法的结果是返回None哪个是假的 - 预期的条件永远不会返回True,因此,你得到了TimeoutException.
在这种情况下,内置非常element_to_be_clickable适合,例如:
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
wait = WebDriverWait(self.driver, 10)
element = wait.until(EC.element_to_be_clickable((By.XPATH, '//div[@class="test"]')))
element.click()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
22646 次 |
| 最近记录: |