如何等待元素可见,然后在Python Selenium Webdriver中单击该元素?

sak*_*ala 5 python selenium webdriver odoo

在odoo中,我编写了代码以单击发送按钮,即

browser.find_element_by_xpath("//span[.='Send']").click()
Run Code Online (Sandbox Code Playgroud)

单击此发送按钮后,然后我必须单击“确认销售”按钮,但是在运行时出现错误,例如元素不可见

我也尝试过

webdriver.wait.until(browser.find_element_by_xpath("//span[.='Confirm Sale']"))
Run Code Online (Sandbox Code Playgroud)

但是会出现类似的错误

AttributeError: 'module' object has no attribute 'wait'
Run Code Online (Sandbox Code Playgroud)

我为此贴2张图片 发送按钮图像之前-这是一个向导 发送按钮后,向导将关闭,然后必须单击确认销售按钮

但是在单击发送按钮之后,工作流状态也从“草稿报价”更改为“已发送报价”,因此,如何等待我的Webdriver完成所有这些工作,然后单击“确认销售”按钮

我已经这样声明了我的webdriver

def setUp(self):
    self.browser = webdriver.Firefox()
    browser = self.browser
    browser.get("http://localhost:5555")
Run Code Online (Sandbox Code Playgroud)

所以请提供给我确切的代码

Ami*_*mit 6

您必须导入webdriver等待模块。您可以执行以下示例。在阅读更紧靠等待等待

from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait

wd = webdriver.Chrome(executable_path="your/path/to/chromedriver")

# Access website

wait = WebDriverWait(wd, 10)
confirm = wait.until(EC.element_to_be_clickable((By.XPATH, "//span[.='Confirm Sale']")))
confirm.click()
Run Code Online (Sandbox Code Playgroud)