首先,我坚信您已经很接近了.您只需要用Pythonic格式化代码,就可以立即解决您的问题,如下所示:
WebDriverWait(browser, 20).until(EC.element_to_be_clickable((By.XPATH, '//*[@id="accountStandalone"]/div/div/div[2]/div/div/div[1]/button'))).click()
您已经提到实际问题,只是提到它不会等到发现却立即发生,并做了其他不应该做的事情,而不是提及程序应该做的事情(例如您的代码试用)和错误,这使您对实际问题有所了解您的程序正在执行(即错误堆栈跟踪).
根据您共享的HTML,您可以按如下方式为两个WebElement诱导一个服务员:
>等待文本NUÄRDU MEDLEM的可见性,您好. :
> CSS_SELECTOR:
WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "div.confirmation-title.nsg-font-family--platform.nsg-text--black.edf-title-font-size--xlarge.js-confirmationTitle")))
> XPATH:
WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//div[@class='confirmation-title nsg-font-family--platform nsg-text--black edf-title-font-size--xlarge js-confirmationTitle' and contains(.,'NU ÄR DU MEDLEM, Hello.')]")))
>等待带有文字FORTSÄTT的按钮:
> CSS_SELECTOR:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button.nsg-button.nsg-bg--black.register-next-step-cta.js-nextStepCta")))
> XPATH:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//button[@class='nsg-button nsg-bg--black register-next-step-cta js-nextStepCta' and contains(.,'FORTSÄTT')]")))