Я работаю над проектом django, используя django_facebook для взаимодействия с Facebook и Selenium для автоматического тестирования системы.Facebook Войти в Selenium Tests
В тестах, когда дело доходит до входа в Facebook из моего приложения, я делаю это:
self.browser.get(self.live_server_url)
self.browser.find_element_by_xpath('//*[@id="facebook_login_js"]/input').click()
self.browser.switch_to_window(self.browser.window_handles[1])
self.login_to_facebook()
, но это не удается, потому что Facebook в JS SDK не завершил асинхронный процесс инициализации. Мои тесты раньше работали, не знаю, изменилось ли сейчас что-то (например, медленная инициализация).
Я думал о таком решении, как использование fbAsyncInit, но этот код предоставляется django_facebook в файле Javascript, и я не хочу его трогать.
Подумайте, как подождать, пока Facebook JS SDK не будет полностью загружен, поэтому я могу использовать функцию входа в систему?
Проблема заключается в том, что щелчок ничего не делает, поскольку SDK еще не загружен. Сообщение «login_to_facebook» должно заполнять форму входа. – geekazoid
@geekazoid хорошо, поставьте все, что, по вашему мнению, не работает, потому что SDK еще не загружен внутри 'set_timeout()'. – Ryan
Еще одно решение, которое я нашел, это «щелкнуть», пока не появится два окна, но мы знаем, что это не хорошо. Также не нужно ждать секунды, так как время загрузки может меняться. Я думал о чем-то вроде изменения в «fb-root» div или kinda, но не могу догадаться об этом из документации. – geekazoid