我正在使用webdriverio与appium服务器通信。我正在尝试自动化Instagram交互。每个自动化都需要我登录和注销。因此,我正在考虑编写一个登录功能和一个注销功能。
目前,我有这样的东西:
const wdio = require("webdriverio");
const opts = {...}
const client = wdio.remote(opts)
const login = (client, username, password) => {
return client
.click("#log_in_button")
.click("#login_username")
.keys(username)
.click("#password")
.keys(password)
.click("#button_text");
}
const someOtherAction = (client) => {
// More actions performed on client
// ...
}
client.init();
login(client, "username", "password")
.someOtherAction(client);
这不起作用^^,但是以这种方式编写的相同代码有效:
client
.init()
.click("#log_in_button")
.click("#login_username")
.keys("username")
.click("#password")
.keys("password")
.click("#button_text")
.waitForExist("~Activity") // Some other actions...
我怀疑这与
this
设置不正确有关,我尝试查看webdriverio的来源,但是我不太了解。因此,如何传递驱动程序,以便编写更多模块化,可用和可维护的代码?另外,我不太了解这种命令链接的工作方式,因为http://webdriver.io处的api文档未说明有关
click
,keys
等函数调用的返回值的任何信息,但是,它们似乎像在返回client
本身一样工作。如果有人也可以解释链接,那就太好了。 最佳答案
建议使用WebdriverIO编写测试的方法是通过PageObject模式。 GitHub存储库中有一个example目录。检查boilerplate section也是一个好主意,WebdriverIO社区的人们在那里提供了有用的入门包,以帮助他们快速入门。
关于javascript - 如何将webdriverio驱动程序传递给模块化设计的功能?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51170123/