Как я могу нажать кнопку Sign in, чтобы войти на веб-страницу, поскольку у меня нет действительного идентификатора, чтобы нажать на нее
Sign in
В разделе «Поиск элементов» в Selenium с Python документами нам дан список методов для поиска элементов:
При поиске элемента вы почти всегда должны использовать любой идентификатор.
Вызов find_element_by_id метод с идентификатором вернет элемент кнопки. Событие щелчка может быть вызвано вызовом click() на кнопке.
find_element_by_id
click()
from selenium import webdriver # Instantiate driver and navigate to website driver = webdriver.Firefox() driver.get("http://www.your_url.com") # Locate button and click button = driver.find_element_by_id('csfWidgets-loginscreen-10-signIn-button') button.click()
Требуемый элемент является динамическим c элементом, поэтому для определения местоположения / click() на элементе с текстом Войдите в систему , вам нужно вызвать WebDriverWait для element_to_be_clickable() и вы можете использовать любую из следующих стратегий локатора :
element_to_be_clickable()
Использование CSS_SELECTOR:
CSS_SELECTOR
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button[id^='csfWidgets-loginscreen'][data-test='ccfk-button'] div.button__content[id$='signIn-content']>span.button__text"))).click()
Использование XPATH:
XPATH
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//button[starts-with(@id, 'csfWidgets-loginscreen') and @data-test='ccfk-button']//div[@class='button__content' and contains(@id, 'signIn-content')]/span[text()='Sign in']"))).click()
Примечание : необходимо добавить следующие импортные данные:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC