Python Selenium无法按下按钮

时间:2020-04-24 22:42:42

标签: python selenium

有人可以帮我看看我缺少的硒脚本无法按下按钮“ Einloggen be my my onvista”吗?


def open_browser():
    chromeOptions = webdriver.ChromeOptions()
    chromeOptions.add_argument("--start-maximized")
    prefs = {"profile.managed_default_content_settings.images": 2}
    chromeOptions.add_experimental_option("prefs", prefs)
    driver = webdriver.Chrome('chromedriver.exe',options=chromeOptions)
    return (driver)

def check_exists_by_xpath(xpath):
    try:
        driver.find_element_by_xpath(xpath)
    except NoSuchElementException:
        return False
    return True


driver = open_browser()

url = 'https://my.onvista.de/login'
driver.get(url)


check_exists_by_xpath("//*[text()='Einloggen bei my onvista']")

el = driver.find_element_by_xpath("//*[text()='Einloggen bei my onvista']")
driver.execute_script("arguments[0].click();", el)

将元素设置为另一个按钮时,效果很好:

el = driver.find_element_by_xpath("//*[text()='Zum onvista bank Webtrading ']")

1 个答案:

答案 0 :(得分:0)

您正在使用的

xpath //*[text()='Einloggen bei my onvista']返回元素h1标头和您的按钮的列表,这是您单击按钮时遇到问题的原因。请参考下面的solutin解决问题。

此外,尝试在单击按钮时诱导WebDriverWait,这可能是同步问题,

wait = WebDriverWait(driver, 20)
wait.until(EC.element_to_be_clickable((By.XPATH, "//span[contains(text(),'Einloggen bei my onvista')]"))).click()

wait = WebDriverWait(driver, 20)
element=wait.until(EC.element_to_be_clickable((By.XPATH, "//span[contains(text(),'Einloggen bei my onvista')]")))
driver.execute_script("arguments[0].click();", element)

注意::请在您的解决方案中添加以下内容

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