Почему мой селектор Selenium извлекает dict? (Django / Python 3.8)

#python #django #selenium #dictionary #selector

Вопрос:

Я только что обновил selenium в своем приложении django на PythonAnywhere. Это мой код:

 from selenium import webdriver

def Synonym():
    chrome_options = webdriver.ChromeOptions()
    chrome_options.add_argument("--headless")
    chrome_options.add_argument("--disable-gpu")
    browser = webdriver.Chrome(options=chrome_options)
    browser.get("https://www.synonym.com/synonyms/test")
    test = browser.find_element_by_class_name("logo").text
    browser.quit()

    return test
 

Но это выдает ошибку:

Ошибка атрибута: объект ‘dict’ не имеет атрибута ‘text’

Когда я беру его без .text, это то, что он мне дает:

 {'ELEMENT': '0.3567871003333163-1'} 
 

Я использую платную учетную запись и должен иметь доступ к любому сайту. Примечание: есть ли способ запретить selenium создавать файлы и папки /tmp/?

Спасибо!

Комментарии:

1. Это странно, этого не должно было произойти. Пожалуйста, поставьте задержку time.sleep(5) раньше test = browser.find_element_by_class_name("logo").text и посмотрите, работает ли это.

2. Я добавил time.sleep(5) и все еще получаю ошибку.

3. Я использую Pycharm, и у меня есть этот код link = "https://www.synonym.com/synonyms/test" driver.get(link) test = driver.find_element_by_class_name("logo").text print(test) , и я получил SYNONYM.COM его в качестве вывода.

4. Просто запустите свой код, используя новейший системный образ на PythonAnywhere и Python 3.8, и получите ‘SYNONYM.COM ‘в качестве возвращаемого значения.

5. Это сделало это!!! Большое вам спасибо!

Ответ №1:

Исправление для меня в PythonAnywhere заключалось в обновлении образа системы: https://help.pythonanywhere.com/pages/ChangingSystemImage

Ответ любезно предоставлен caseneuve!