根据twitter bootstrap,这就是我们做收音机的方式:
<div class="radio">
<label>
<input type="radio" name="optionsRadios" id="optionsRadios1" value="option1" checked>
Option one is this and that—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 收音机不再按应有的方式显示。
<div class="radio">
<input type="radio" name="optionsRadios" id="optionsRadios1" value="option1" checked>
<label>
Option one is this and that—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].
每当我有一个带有标签的输入表单时都会发生这种情况,如果我从标签中取出输入,它就会起作用。但这并不像收音机那样简单,因为它与其他一些输入,收音机一样。
这是一个正确编码的收音机:
这是一个带有标签标签外输入的收音机:
那么,你是怎么做到的呢?