объект «type» не поддается подписке ошибка в Python Selenium

#python #python-3.x #selenium

#python #python-3.x #селен

Вопрос:

Я новичок в среде Python Selenium. Это мой фрагмент кода.

 from selenium import webdriver

from selenium.webdriver.support.ui import WebDriverWait

import unittest

class LoginTest(unittest.TestCase):

    def setUp(self):

        self.driver= webdriver.Firefox()
        self.driver.get("https://www.facebook.com/")

    def test_Login(self):
        driver=self.driver
        facebookUsername ="somoe@gmail.com"
        facebookPassword ="basabasa"
        emailFieldID     = "email"
        passFieldID      = "pass"
        loginButtonXpath = "//input[@value= 'Log In']"
        fbLogoXpath      = "(//a[contains(href , 'logo')])[1]"

        emailFieldElement    = WebDriverWait[driver, 10].until(lambda driver:driver.find_element_by_id(emailFieldID))
        passwordFieldElement = WebDriverWait[driver, 10].until(lambda driver:driver.find_element_by_id(passFieldID))
        loginButtonElement   = WebDriverWait[driver, 10].until(lambda driver:driver.find_element_by_xpath(loginButtonXpath))

        emailFieldElement.clear()
        emailFieldElement.send_keys(facebookUsername)
        passFieldElement.clear()
        passFieldElement.send_keys(facebookPassword)
        loginButtonElement.click()
        loginButtonElement=WebDriverWait[driver, 10].until(lambda driver : driver.find_element_by_xpath(fbLogoXpath))

    def tearDown(self):
        self.driver.quit()
if __name__=='__main__':
        unittest.main()
  

Этот код загружает Facebook при запуске, но не заполняет область электронной почты и пароля автоматически и возвращается с ошибкой, упомянутой выше.

Ответ №1:

Вы пытаетесь индексировать WebDriverWait объект вместо его инициализации.

Вы должны заменить все:

 WebDriverWait[driver, 10]
  

с

 WebDriverWait(driver, 10)
#            ^          ^
  

Ссылка:

Явное ожидание Selenium

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

1. @TaimurKhurram Если ответ помог, вы можете рассмотреть возможность его принятия

2. @MosesKoledoye Принятие ответов — очень сложная задача … имхо;-B (сарказм включен)