Python Селен не может нажать на кнопку - PullRequest
0 голосов
/ 25 апреля 2020

Может кто-нибудь помочь мне и посмотреть, что мне не хватает, что мой сценарий селена не может нажать кнопку "Einloggen bei 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 голосов
/ 25 апреля 2020

xpath //*[text()='Einloggen bei my onvista'], который вы используете, возвращает список заголовка элемента h1, и ваша кнопка - причина, по которой вы сталкиваетесь с проблемой при нажатии на вашу кнопку. Пожалуйста, обратитесь к решению проблемы, чтобы решить вашу проблему.

Кроме того, попробуйте вызвать 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...