Не удается подключиться к веб-странице, используя селен и Python - PullRequest
1 голос
/ 25 марта 2019

Я пытаюсь подключиться к определенной веб-странице, но она не нажимает кнопку Login:

browser.get('https://www.tsago.gr/eshop/account')
print('Browser Opened')
username = browser.find_element_by_id('email')
username.send_keys(email)
password = browser.find_element_by_id('password')

password.send_keys(pwd)
time.sleep(2)
sing_in = browser.find_element_by_xpath('//*[@class="btn btn-primary"]')
sing_in.click()
print('Login Clicked')

Я пытался найти элемент по css, по имени и т. Д., Но я не знаю, почему не нажимает кнопку для входа в систему

HTML-часть выглядит следующим образом

<div class="span3 float-right" style="float:right;">                                   
   <button type="submit" class="btn btn-primary">Connect</button>
</div>

Имя пользователя и пароль написаны, и они правильны

Ответы [ 3 ]

1 голос
/ 25 марта 2019

Кажется, ты был довольно близко. Возможно, Панель сообщений Cookies была препятствием, и вы можете либо принять куки , либо прокрутить кнопку Connect , и вы можете использовать следующее решение:

  • Кодовый блок:

    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
    
    options = webdriver.ChromeOptions() 
    options.add_argument("start-maximized")
    options.add_argument("--disable-extensions")
    # options.add_argument('disable-infobars')
    browser = webdriver.Chrome(chrome_options=options, executable_path=r'C:\Utility\BrowserDrivers\chromedriver.exe')
    browser.get('https://www.tsago.gr/eshop/account')
    print('Browser Opened')
    WebDriverWait(browser, 30).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "input#email[name='email']"))).send_keys("Nikos")
    browser.find_element_by_css_selector("input#password[name='password']").send_keys("Nikos")
    browser.execute_script("window.scrollBy(0,250)", "");
    browser.find_element_by_css_selector("div.control-group div.span3 button.btn.btn-primary").click()
    print('Login Clicked')
    
  • Выход на консоль:

    Browser Opened
    Login Clicked
    
  • Снимок браузера:

cookies

0 голосов
/ 25 марта 2019

это работает для меня:

driver.find_element_by_css_selector('div.span3 > button[type="submit"]').click()

В общем, вы должны убедиться, что вы идентифицируете правильный элемент перед кодированием.для этого - используйте devTools (f12 в chrome / firefox) и выполните запрос на вкладке «console»

для идентификации xpath try $ x , то есть: $x('//button[@type="submit"]').

для селектора CSS используйте $$ примерно так: $$("div.someClass#someID")

Вы можете навести курсор на результаты, и найденные элементы выделят

edit : я заметил, что у вас были проблемы с опцией css, вы также можете попробовать

driver.find_element_by_xpath('//div[contains(@class,"span3")]/button[contains(@class,"btn-primary")]")
0 голосов
/ 25 марта 2019

Следующий css Selector должен однозначно идентифицировать искомую кнопку:

driver.find_element_by_css_selector('div.span3.float-right > button')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...