根据 twitter bootstrap ,这就是我们制作 radio 的方式:

<div class="radio">
  <label>
    <input type="radio" name="optionsRadios" id="optionsRadios1" value="option1" checked>
    Option one is this and that&mdash;be sure to include why it's great
  </label>
</div>

这是我的代码:
$browser->click('#menu-reports')
        ->waitForText('Users')
        ->click('#menu-reports-users')
        ->radio('sitesActive', '2')
        ->radio('includeDisabled', '2')
        ->radio('includeNonCertifiable', '2')
        ->press('Apply')
        ->waitForText('Showing 0 to 0 of 0 entries')
;

在标签标签内输入。但问题是 Dusk(实际上是 Facebook Webdriver)无法通过这种方式找到它。它不断提高:
Facebook\WebDriver\Exception\ElementNotVisibleException: element not visible

为了使它工作,我将输入放在标签之外,但是,当然,boostrap radio 不再显示它应该的样子。
<div class="radio">
  <input type="radio" name="optionsRadios" id="optionsRadios1" value="option1" checked>
  <label>
    Option one is this and that&mdash;be sure to include why it's great
  </label>
</div>

也不能使用 ID:

甚至没有为输入设置 ID:
<input
   type="radio"
   name="sitesActive"
   id="sitesActive3"
   value="2"
>

并尝试以这种方式选择它:
->radio('#sitesActive3', '2')

问题是 Dusk (Webdriver) 甚至无法看到页面中的元素,因为这个简单的类似以完全相同的方式失败:
$browser->waitFor('#sitesActive3');

导致:
Facebook\WebDriver\Exception\TimeOutException: Waited 5 seconds for selector [#sitesActive3].

每当我有一个带有标签的输入表单时,就会发生这种情况,如果我从标签中取出输入,它就可以工作。但这并不像 radio 那么简单,就像其他一些输入, radio 一样。

这是一个正确编码的 radio :

这是一个带有标签标签之外的输入的 radio :

那么,你是如何做到这一点的?

最佳答案

我的表单有一个单选按钮。这是我检查它的方式。


<div class="row">
    <div class="col-md-12">
        <div class="form-group">
            <label>Gender</label>
            <div>
                <label class="radio-inline">
                    <input type="radio" id="gender" name="gender" value="m">Male
                </label>
                <label class="radio-inline">
                    <input type="radio" id="gender" name="gender" value="f">Female
                </label>
            </div>
        </div>
    </div>
</div>

CreateUserTest.php
class CreateUserTest extends DuskTestCase
{

    public function  testCreateForm()
    {
        $this->browse(function (Browser $browser) {
            $browser->visit('/user/create')
                ->radio('#gender', 'm')
                ->click('button[type="submit"]')
                ->assertSee('Successfully created user.');
        });
    }
}

这对我有用。我认为这会对你有所帮助。

关于laravel - 我们如何使用 Laravel Dusk 检查 Twitter Bootstrap 单选按钮?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44893984/

10-13 00:14