有谁知道如何用laravel黄昏测试vuetify v-select?
我试过$browser->select('size', 'Large');
没有成功
这是我要测试的v选项之一
<v-flex class="form__item">
<v-select
id="estatus"
dusk="estatus"
v-model="form.id_estatus"
label="Estatus"
:items="estatus"
item-text="nombre"
item-value="id"
v-validate="{ required:true }"
data-vv-name="estatus"
data-vv-as="estatus"
:error-messages="(errors.collect('estatus'))"
required
></v-select>
</v-flex>
这就是生成的HTML
单击v-select时,将在HTML的其他部分显示选项列表
单击.v-select
元素并等待select打开:
$browser->click('.v-select');
$browser->waitFor('.v-menu__content');
然后您可以按索引选择一个选项:
$browser->elements('.v-menu__content a')[2]->click();
或者通过文本(使用XPath):
$selector = "//div[@class='v-menu__content menuable__content__active']//div[text()='State 3']";
$browser->driver->findElement(WebDriverBy::xpath($selector))->click();
单击v-select元素以列出选项,然后等待下拉菜单类出现,然后通过单击菜单列表中的第三个标记从列表中选择元素(下例中为2)。最后,等到下拉菜单类消失后再转到下一部分测试。
$browser->click('#region')
->with('#region', function ($vSelect) {
$vSelect->waitFor('.dropdown-menu')
->elements('.dropdown-menu a')[2]->click();
})
->waitUntilMissing('.dropdown-menu');
(1)在Vue模板中:
用<v-select>
包裹<div id="selectStatus"></div>
(2)在黄昏测试中,使用:
$browser->click('#selectStatus .v-select');
$browser->waitFor('.menuable__content__active');
$browser->elements('.menuable__content__active a')[1]->click();
$browser->waitUntilMissing('.menuable__content__active');
$browser->assertSeeIn('#selectStatus .v-select','theStatusIExpectToSee');
- 要么 -
如果我们使用稍微复杂的策略,可以在没有将它包裹在<v-select>
中的情况下测试<div id="foo"></div>
。
我们可以将id
直接放在div
上,或者甚至依靠id
中包含的文本内容,而不是将v-select
放在v-select
包装器上,而是采用以下策略(涉及xpath
):
use Facebook\WebDriver\WebDriverBy;
public function keyOfParentContainingItem($elements, $itemName, $itemValue = null){
$elWithItemKey = null;
$itemNamePrefix = ($itemName !== 'text()') ? '@' : '';
$itemValueMatchString = ($itemValue !== null) ? '="'.$itemValue.'"' : '';
foreach($elements as $k=>$v){
$xpath = './/*['.$itemNamePrefix.$itemName.$itemValueMatchString.']';
if(!empty($v->findElements(WebDriverBy::xpath($xpath)))){
$elWithItemKey = $k;
}
}
return $elWithItemKey;
}
public function testMyVSelect(){
$this->browse(function (Browser $browser) {
$browser->visit('/myAddress');
$els = $browser->elements('.v-select');
$els[$this->keyOfParentContainingItem($els,'id','idOnVSelect')]->click();
$browser->waitFor('.menuable__content__active');
$menuEls = $browser->elements('.menuable__content__active a');
$menuEls[$this->keyOfParentContainingItem($menuEls,'text()',"some text")]->click();
$browser->waitUntilMissing('.menuable__content__active');
$els = $browser->elements('.v-select');
$key = $this->keyOfParentContainingItem($els,'text()',"some text");
$this->assertTrue($key !== null);
});
}
使用Vuetify 1.5.14
。