Как нажать на кнопку «Читать руководство» с помощью Selenium после входа в систему через Python - PullRequest
0 голосов
/ 12 июня 2019

Мне нужен скрипт, который регистрирует меня на github и нажимает кнопку «Читать руководство». У меня есть это, чтобы войти, но после того, как это сделано, это больше не работает. Пожалуйста, помогите.

Нашли решение, нужно только поставить немного time.sleep () с задержкой. Одной секунды достаточно

from selenium import webdriver


browser = webdriver.Firefox()
browser.get('https://github.com/session')

login_area = browser.find_element_by_name('login')
login_area.send_keys('maximmashkov')

login_area = browser.find_element_by_id('password')
login_area.send_keys('12345')

submit_button = browser.find_element_by_name('commit')
submit_button.click()

Ответы [ 2 ]

0 голосов
/ 12 июня 2019

Скорее всего, вашему сценарию не удалось дождаться появления кнопки "Прочитать руководство", рассмотрите возможность использования Явное ожидание , чтобы Selenium мог ждать в течение определенного периода времени для появления элемента в ДОМ

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

#initialize your browser here

login_area = browser.find_element_by_name('login')
login_area.send_keys('maximmashkov')

login_area = browser.find_element_by_id('password')
login_area.send_keys('12345')

submit_button = browser.find_element_by_name('commit')
submit_button.click()

submit_button = browser.find_element_by_name('commit')
submit_button.click()

read_the_guide = element = WebDriverWait(browser, 10).until(
    EC.presence_of_element_located((By.LINK_TEXT, "Read the guide")))
read_the_guide.click()

browser.quit()

Дополнительная информация:

0 голосов
/ 12 июня 2019

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

  • Использование LINK_TEXT:

    WebDriverWait(browser, 20).until(EC.element_to_be_clickable((By.LINK_TEXT, "Read the guide"))).click()
    
  • Использование CSS_SELECTOR:

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "a.btn.btn-primary[href='https://guides.github.com/activities/hello-world/']"))).click()
    
  • Использование XPATH:

    WebDriverWait(browser, 20).until(EC.element_to_be_clickable((By.XPATH, "//a[@href='https://guides.github.com/activities/hello-world/' and text()='Read the guide']"))).click()
    
  • Примечание : Вы должны добавить следующий импорт:

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