我目前正在制作一个登录selenium并通过验证的程序。我已经考虑并准备好了程序的其余部分,但无论我做什么来单击验证按钮,无论是通过 ID 还是通过内部文本,该按钮都不会单击。我在控制台中运行了一些内容来检查有多少个元素具有该 id,结果显示只有 1 个。
这是不起作用的代码行,其他所有内容(例如登录)都工作得很好。
WebDriverWait(driver, 30).until(EC.presence_of_element_located((By.ID, "home_children_button"))).click()
我也遇到过类似的情况,在我看来,这很可能是一个
iframe
问题。您可以尝试以下方法:
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
# ... after open the page of verification..
# Wait for the iframe to be present and switch to it
WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.TAG_NAME, "iframe")))
# Locate the button inside the iframe
verify_button = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//button[text()='Verify']")))
# Click the button
verify_button.click()
我还建议在尝试选择元素后调试 WebDriver 元素。这可以帮助确保您与所需的元素正确交互。