我正在开发一个 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/