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

Codeception - If field true add +1

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 的新手,不知道如何解决这个问题。

问题

用户在字段中输入房间号,如果该房间已被占用,则会弹出抱歉消息。

这就是我想要达到的目标。

如果房间号。被采用所以它必须增加一个并再次检查它是否可用。 检查由 $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);
    }

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

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

不能像这样将动作用作布尔值:

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');
    }