我不熟悉Codeception,但在注入页面对象时遇到了一个问题。当我向页面对象添加以下构造逻辑时,就会出现问题。
public function __construct(\AcceptanceTester $I) {
$this->tester = $I;
}
... 我从以下登录页面对象示例中获得:http://codeception.com/docs/06-ReusingTestCode#PageObjects
我得到的错误是:
[Codeception\Exception\InjectionException]未能在“MyTest”实例中注入依赖项。无法创建“页面\登录”的实例。无法创建“AcceptanceTester”的实例。未能创建“Codeception\Scenario”的实例。无法解析依赖项“Codeception\TestCase”。
这就是我如何在我的Cest中注入页面。
protected function _inject(\Page\Login $login) {
$this->login_page = $login;
}
如果删除_构造代码,错误就会消失。这是Codeception中的错误还是我做错了什么?
这是我找到的工作。。。
use \AcceptanceTester;
use Page\Login as LoginPage;
class MyCest {
protected $login_page;
public function _before(AcceptanceTester $I) {
$this->login_page = new LoginPage($I);
}
}
这是预期的行为。
您的LoginPage构造函数不应该在DI期间有任何要实例化的参数,所以您的解决方法是使用AcceptanceTester实例初始化LoginPage实例的正确方法。
当您将AcceptanceTester指定为LoginPage的ctor arg时,Codeception的DI机制将尝试按以下方式递归解决依赖关系:
LoginPage(AcceptanceTester) -> AcceptanceTester(Scenario) -> Scenario(TestCase) -> TestCase
但是TestCase是抽象类,因此不能实例化。
你能帮我在页面对象模式中进行类(页面)注释吗?例如:我在上部菜单和页脚中有“联系人”WebElement。使用相同的定位器。我知道,我可以用一些注释和UpperMenu.class注释Footer.class,我也可以在其中放置整个页面的选择器。测试将首先检查页面选择器,然后检查元素选择器。就像:“footer_page_selector”“联系人”=“footer_page_contacts”
4.3、4.4节介绍了如何将C++对象导出到JavaScript环境,本节将介绍其逆操作,既:将JavaScript对象注入到C环境。 4.5.1 创建JavaScript对象/ID表 无论从内存模型的角度,还是从运行模型的角度,C原生代码都无法直接访问JavaScript中的对象。为此,我们需要提供一种途径,让C环境可以识别不同的JavaScript对象,最容易想到的,就是使用对象/ID表,该方
问题内容: 我真的很喜欢硒2按照惯例如何促使您使用PageObjects作为POJO,然后简单地使用PageFactory实例化此类中的字段。 我发现的限制是,我们在许多不同的页面上重用了许多元素。最大的问题是,这些重用的组件在不同页面上显示时,其ID /名称不相同;但是我们将为每个测试运行的测试是相同的。 例如,我们在许多地方收集日期。因此,此示例页面对象可能是(删除了“月,日”字段): 然后,
问题内容: 我是JAX-RS的新手,我试图了解注释的工作方式。 在javadoc中有六个等级的列表()。但是,我在网络上找到将this注释与其他类型一起使用的代码,例如: 是否有可以与此注释一起使用的受支持类型的列表?在执行标准之间,此列表是否会更改? 我目前正在试验Jersey,我担心自己写的代码无法移植到其他JAX-RS实现中。 问题答案: 铆接的JAX-RS 规范定义了你可以通过注入的所有标
我是 JAX-RS 的新手,我正在尝试了解注释应该如何工作。 在javadoc中有一个包含六个类的列表(< code >应用程序、< code>UriInfo、< code >请求、< code>HttpHeaders、< code >安全上下文、< code >提供者)。但是,我在网上找到了将this批注用于其他类型的代码,例如: 是否有可用于此批注的支持类型列表?该列表在标准实施期间是否发生变
我刚开始使用Dagger并尝试使用dagger2进行DI,但看起来它给我的活动注入了一个空演示器。下面是我的代码。 公共类TasksActivity扩展AppCompatActivity{