Codeception - 如果字段为true则添加+1

时间:2018-01-29 14:19:23

标签: php codeception

public function pickOneRoom(\AcceptanceTester $I)
{
    $I->wantTo('Pick a available room');

    $I->fillField('body > div.mfp-wrap.mfp-close-btn-in.mfp-auto-cursor.mfp-desired-room.mfp-ready > div > div.mfp-content > div > div > div > div.mod-desired-room__filter > div.js-build-desired-choose-room > div.grid.js-desired-room-choose > div > div > div:nth-child(1) > div > input[type="text"]','400');
    $this->checkFavRoom($I);

    if ($I->see('Sorry try again') == true)
    {
        $I->fillField('body > div.mfp-wrap.mfp-close-btn-in.mfp-auto-cursor.mfp-desired-room.mfp-ready > div > div.mfp-content > div > div > div > div.mod-desired-room__filter > div.js-build-desired-choose-room > div.grid.js-desired-room-choose > div > div > div:nth-child(1) > div > input[type="text"]','400++');
    }
}

这是我到现在为止所提出的。我是php的新手,不知道如何解决这个问题。

问题

用户在字段中输入房间号码,如果拍摄了房间,则会弹出抱歉消息。

这就是我想要实现的目标。

如果房间Nr。这是必须增加1并再次检查它是否可用。 检查由$this->checkFavRoom($I);完成。 号码从400开始到445结束。 问题是每次看到该文本时添加一个数字,在字段值中添加一个,是一个棘手的部分。

欢迎任何输入。 谢谢。

编辑:

这就是我想出的,问题是它不会做第二个FillField,我真的很无能。

$I->wantTo('Pick a available room');

    $I->fillField('body > div.mfp-wrap.mfp-close-btn-in.mfp-auto-cursor.mfp-desired-room.mfp-ready > div > div.mfp-content > div > div > div > div.mod-desired-room__filter > div.js-build-desired-choose-room > div.grid.js-desired-room-choose > div > div > div:nth-child(1) > div > input[type="text"]','400');
    $this->checkFavRoom($I);
    $I->wait(1);

    if($I->See('Sorry try again') == false)
    {
        $this->submit($I);
    }
    else
    {
        $I->wait(1);
        $I->fillField('body > div.mfp-wrap.mfp-close-btn-in.mfp-auto-cursor.mfp-desired-room.mfp-ready > div > div.mfp-content > div > div > div > div.mod-desired-room__filter > div.js-build-desired-choose-room > div.grid.js-desired-room-choose > div > div > div:nth-child(1) > div > input[type="text"]','402');
        $I->wait(5);
        $this->checkFavRoom($I);
        $this->submit($I);
    }

2 个答案:

答案 0 :(得分:1)

不能使用像这样的bool:

if($I->see('lorum ipsum')){/*do something*/}

可以通过使用try和catch块来分支程序流:

<?php

//Using a Codeception action to branch the flow of the script
//This Cept will always pass because the exception is caught

$I = new AcceptanceTester($scenario);

$I->amOnUrl("https://wordpress-bdd.com");

try
    {
        $I->see("Never for money, always for love.");
        echo('This happens if the $I->see works');
    }
catch(Exception $e)
    {
        echo('This happens if the $I->see fails');
    }

答案 1 :(得分:0)

如果有人需要,请回答:)

https://github.com/Codeception/Codeception/issues/4793