#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.