Решение проблемы с selenium webdriver в системе Win 10

введите здесь описание изображения

Я пытаюсь автоматизировать вход на сайт с помощью селена. (ОС Windows 10, 64-разрядная)

Используя приведенный ниже код, я могу открыть ссылку, но после загрузки веб-страницы get cmd не освобождает мой интерпретатор python следующий cmd:

browser.find_element_by_class_name('gb_g').click()

не запускается.

Я попытался открыть google.com, но проблема такая же, я пробовал другой браузер, он работает, но мой URL-адрес проекта работает только с Internet Explorer.

Я пробовал использовать как 64-разрядную, так и 32-разрядную версию драйвера Internet Explorer.

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

link = 'https://www.google.com/'
browser = webdriver.Ie(executable_path='S:\work\Automation\Elog\IEDriverServer.exe')
browser.get(link)
browser.find_element_by_class_name('gb_g').click()

person rahul desai    schedule 20.12.2019    source источник
comment
Не могли бы вы сообщить нам, почему вы пытаетесь запустить IEDriverServer с FireFox? Предлагаю вам попробовать запустить его с помощью Internet Explorer. Также попробуйте проверить и убедиться, что вы используете последнюю версию IEDriverServer.   -  person Deepak-MSFT    schedule 20.12.2019
comment
Прежде чем задать вопрос, я попытался использовать браузер Firefox для проверки, поэтому при вставке здесь я не могу редактировать код.   -  person rahul desai    schedule 21.12.2019


Ответы (1)


Вам нужно учесть несколько вещей:

  • Если ваш вариант использования - использовать internet-explorer необходимо использовать от IEDriverServer.exe до selenium.webdriver.ie.webdriver.WebDriver() Class следующим образом:

    webdriver.Ie(executable_path=r'S:\path\to\IEDriverServer.exe')
    

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

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

    from selenium import webdriver
    
    browser = webdriver.Ie(executable_path=r'S:\work\Automation\Elog\IEDriverServer.exe')
    browser.get("https://www.google.com/")
    WebDriverWait(browser,10).until(EC.element_to_be_clickable((By.LINK_TEXT, "Gmail"))).click()
    
  • Использование CSS_SELECTOR:

    from selenium import webdriver
    
    browser = webdriver.Ie(executable_path=r'S:\work\Automation\Elog\IEDriverServer.exe')
    browser.get("https://www.google.com/")       
    WebDriverWait(browser,10).until(EC.element_to_be_clickable((By.CSS_SELECTOR,"a.gb_g[href*='com/mail/?tab']"))).click()
    
  • Использование XPATH:

    from selenium import webdriver
    
    browser = webdriver.Ie(executable_path=r'S:\work\Automation\Elog\IEDriverServer.exe')
    browser.get("https://www.google.com/")
    WebDriverWait(browser,10).until(EC.element_to_be_clickable((By.XPATH,"//a[text()='Gmail']"))).click()
    
  • Примечание. Вам необходимо добавить следующий импорт:

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

Обновление (из комментария @ rahuldesai)

С помощью вышеупомянутых конфигураций и использования 32-битного IEDriverServer двоичного файла каким-то образом проблема решается.

person DebanjanB    schedule 20.12.2019
comment
Привет @DebanjanB, проблема в том, что команда get () замораживает интерпретатор, который открывает запрошенную веб-страницу, но не освобождает интерпретатор, поэтому следующая команда может выполнить - person rahul desai; 20.12.2019
comment
Что именно вы имеете в виду под не выпускает интерпретатор? - person DebanjanB; 20.12.2019
comment
get () cmd продолжает работать даже после загрузки веб-страницы, я добавил изображение для справки - person rahul desai; 20.12.2019
comment
Проверьте мой ответ, вам нужно сначала вызвать WebDriverWait для состояния document.ready как Complete, чтобы get() было завершено. - person DebanjanB; 20.12.2019
comment
@rahul desai - запустите этот код Python выше в PyCharm или выполните его из командной строки. Вот ссылка для загрузки PyCharm. Jupyter - это круто, и для этого попробуйте PyCharm. - person Jortega; 20.12.2019
comment
@rahuldesai Получите обновленный ответ и сообщите мне статус. - person DebanjanB; 20.12.2019
comment
Я пробовал использовать Pycharm и Spyder как IDE, но это не помогло. Также переустановил селен, все еще та же проблема - person rahul desai; 21.12.2019
comment
Пробовал использовать 32-битный драйвер, т.е. shomhow, решил проблему. - person rahul desai; 23.12.2019
comment
Спасибо, что поделились решением проблемы. Я предлагаю вам опубликовать свое решение в качестве ответа на эту тему и попытаться пометить свой ответ как принятый ответ на этот вопрос через 48 часов, когда он будет доступен для отметки. Это может помочь другим членам сообщества в будущем в решении подобных проблем. Спасибо за понимание. - person Deepak-MSFT; 24.12.2019
comment
@rahuldesai Я обновил ответ вашими комментариями, что решает проблему. - person DebanjanB; 24.12.2019