Как выбрать и нажать кнопку для входа на веб-страницу? - PullRequest
0 голосов
/ 26 февраля 2020

HTML code for button

Как я могу нажать кнопку Sign in, чтобы войти на веб-страницу, поскольку у меня нет действительного идентификатора, чтобы нажать на нее

Ответы [ 2 ]

2 голосов
/ 26 февраля 2020

В разделе «Поиск элементов» в Selenium с Python документами нам дан список методов для поиска элементов:

  • find_element_by_id
  • find_element_by_name
  • find_element_by_xpath
  • find_element_by_link_text
  • find_element_by_partial_link_text
  • find_element_by_tag_name
  • 101_ * 101_20_1_10_set_by_by_by_by_by_1_0_1_5_сорт внутри тега кнопки находится идентификатор, для которого установлено значение «csfWidgets-loginscreen-10-signIn-button».

    При поиске элемента вы почти всегда должны использовать любой идентификатор.

    Вызов 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()
    
0 голосов
/ 26 февраля 2020

Требуемый элемент является динамическим c элементом, поэтому для определения местоположения / click() на элементе с текстом Войдите в систему , вам нужно вызвать WebDriverWait для element_to_be_clickable() и вы можете использовать любую из следующих стратегий локатора :

  • Использование 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:

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