javascript - Selenium 测试中的 Facebook 登录

标签 javascript django facebook selenium django-facebook

我正在开发一个 django 项目,使用 django_facebook 进行 Facebook 交互,使用 Selenium 进行自动化系统测试。

在测试中,当涉及到从我的应用程序登录到 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 完全加载后才能使用登录功能吗?

最佳答案

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]);

window.set_timeout(function(){
    self.login_to_facebook();
}, 1000)

上面的代码会让它在调用登录之前等待一秒钟。您可以通过更改 1000 来玩转时间。 Set_timeout 以毫秒为单位获取时间值(因此 1000 = 1 秒)。

关于javascript - Selenium 测试中的 Facebook 登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15934108/

相关文章:

facebook - "default"PHP SDK使用的access_token

javascript - 无法使用jquery从函数中获取值

JavaScript 展开运算符和条件运算符,为什么它不适用于数组?

python - Wagtail 图像部署后无法加载

django - 如何使我的 css 文件在 django 中工作

html - 为什么当我滚动时 facebook 页面应用程序中的统一溢出

Facebook 身份验证返回 "denied"即使我单击允许

javascript - 将可重用组件与 ReactJs 和 Flux 一起用于多个商店

javascript - 使用javascript在div中的多行字符串

Django 查询集 : using select_related to return objects from a set of foreign keys