Нажатие кнопки Python Selenium с классом Не работает

#python #selenium

Вопрос:

Я хочу войти в https://in1.dashboard.clevertap.com/login.html через селен с помощью safari. Я могу ввести имя пользователя и пароль, однако, поскольку у них обоих есть идентификатор, однако с помощью любого из методов selenium, чтобы найти кнопку, я не могу нажать на кнопку «Войти». Когда я пытаюсь, он либо показывает ошибку, либо открывает логин Google. Я попытался использовать два класса: один-класс кнопки, а второй-класс span, который определяет текст для кнопки. Все они потерпели неудачу.

Вот код:

 from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time

driver = webdriver.Safari()
driver.get("https://in1.dashboard.clevertap.com/login.html")
time.sleep(5)

driver.find_element_by_id("input-14").send_keys("username@username.com")
driver.find_element_by_id("input-18").send_keys("password")

#Try-1
#driver.find_element_by_xpath("//button[@class = 'ct-button full-width v-btn v-btn--contained theme--light v-size--default primary']").click();

#Try-2
#driver.find_element_by_xpath("//[@id='app'/div/div/div/div[1]/div/div/div/form/div[4]/button.ct-button full-width v-btn v-btn--contained theme--light v-size--default primary").click()

#Try-3
#driver.find_element_by_css_selector("button.ct-button full-width v-btn v-btn--contained theme--light v-size--default primary").click()

#Try-4
#driver.find_element_by_class_name("ct-button full-width v-btn v-btn--contained theme--light v-size--default primary").click()

#Try-5
#driver.find_element_by_xpath("//button[@class = 'v-btn__content']").click();

#Try-6
#driver.find_element_by_xpath("//[@id='app'/div/div/div/div[1]/div/div/div/form/div[4]/button/span.v-btn__content").click()

#Try-7
#driver.find_element_by_css_selector("button.v-btn__content").click()

#Try-8
#driver.find_element_by_class_name("v-btn__content").click()
 

Ответ №1:

Это a span , а не button тот, у которого есть этот класс. попробуйте

 driver.find_element_by_css_selector("span.v-btn__content").click()
 

в качестве альтернативы вы могли бы использовать

 driver.find_element_by_css_selector('button.ct-button.full-width.v-btn.v-btn--contained.theme--light.v-size--default.primary').click()
 

Комментарии:

1. Это сработало без каких-либо ошибок. Однако вместо входа в систему продолжайте использовать кнопку Google.

Ответ №2:

нажмите на него, используя Explicit wait :

 wait = WebDriverWait(driver, 10)
element = wait.until(EC.element_to_be_clickable((By.XPATH, "//span[text()='Log In']/..")))
element.click()
 

Импорт :

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

Комментарии:

1.Это сработало без каких-либо ошибок.Однако вместо входа в систему продолжайте использовать кнопку Google.

2. Он должен нажать на Log In , это именно то место, куда вы хотите нажать, верно ?

3. ДА. Я хочу, чтобы он нажал на кнопку Войти. Однако я понимаю, почему он нажимает «Продолжить с Google». Продолжайте, у Google есть отдельный класс и собственный идентификатор.

4. Вы также можете попробовать использовать xpath //span[text()='Log In'] . Однако приведенный выше код должен нажать на кнопку входа в систему.

5. Я повторил, но результат тот же. Можем ли мы предположить, что это может быть проблема с Сафари? Должен ли я попробовать использовать другой браузер?

Ответ №3:

Посмотрим, сработает ли это:-

 driver.find_element_by_xpath(".//span[text()='Log In']/..").click()
 

Комментарии:

1. Это сработало без каких-либо ошибок. Однако вместо входа в систему продолжайте использовать кнопку Google.

Ответ №4:

попробуйте это

 driver.find_element_by_xpath("/html/body/div[1]/div[1]/div/div/div[1]/div[1]/div/div/div/form/div[4]/button")
 

PS: было бы неплохо иметь ошибку для лучшего понимания

Комментарии:

1. Не используйте абсолютный xpath, всегда используйте относительный xpath

2. Согласованный. Абсолютный xpath будет проблематичным, если структура будет изменена. Тем не менее, я попробовал сделать это выше, и он запустился и открыл кнопку Продолжить с помощью Google.