首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ElementUI的Laravel + Vue

ElementUI的Laravel + Vue
EN

Stack Overflow用户
提问于 2018-03-27 13:35:31
回答 3查看 2.3K关注 0票数 1

我需要帮助和Laravel Dusk一起做笔试。我用的是Vue和ElementUI。我非常喜欢这个框架,但是,我不能在我的测试中使用Dusk的内置select()方法。

这是因为<input>.的选择组件没有生成真正的<select>标记,而是创建了一个普通的<input> (即只读的),并且在页面底部创建了带有select选项的弹出器,因此,在我的页面中没有<select>标记,只有一个<select>和一个只读的ElementUI

如何用Dusk编写测试,让我点击'div'??

如果我尝试用这样的输入输入:

代码语言:javascript
复制
// $browser->select('my_select_id'); not working,
$browser->type('my_select_id', 1);

这给了我一个例外:

代码语言:javascript
复制
Facebook\WebDriver\Exception\InvalidElementStateException: invalid element state: Element must be user-editable in order to clear it.

所以我不知道如何测试ElementUI的选择:

请帮帮忙,

谢谢!

编辑

发布由ElementUI生成的html:

代码语言:javascript
复制
    <div class="el-select w-100 el-select--mini" value="0" title="Cliente" dusk="v-select-component">
        <div class="el-input el-input--mini el-input--suffix">
            <input autocomplete="off" placeholder="Cliente" size="mini" name="client_id" id="client_id" readonly="readonly" type="text" rows="2" class="el-input__inner">
            <span class="el-input__suffix">
                <span class="el-input__suffix-inner">
                    <i class="el-select__caret el-input__icon el-icon-arrow-up"></i>
                </span>
            </span>
        </div>
        <div class="el-select-dropdown el-popper" style="display: none; min-width: 512.344px;">
            <div class="el-scrollbar" style="">
                <div class="el-select-dropdown__wrap el-scrollbar__wrap" style="margin-bottom: -17px; margin-right: -17px;">
                    <ul class="el-scrollbar__view el-select-dropdown__list" style="position: relative;">
                        <li class="el-select-dropdown__item selected"><span>Item 1</span></li>
                        <li class="el-select-dropdown__item"><span>Item 2</span></li>
                    </ul>
                </div>
                <div class="el-scrollbar__bar is-horizontal">
                    <div class="el-scrollbar__thumb" style="transform: translateX(0%);"></div>
                </div>
                <div class="el-scrollbar__bar is-vertical">
                    <div class="el-scrollbar__thumb" style="transform: translateY(0%);"></div>
                </div>
            </div>
        </div>
    </div>

编辑2:

我在ElementUI的选择示例中添加了一个简单的JSFiddle。我只想用Laravel测试select

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-03-28 16:42:03

您必须单击.el-select元素并等待弹出器打开:

代码语言:javascript
复制
$browser->click('.el-select');
$browser->waitFor('.el-select-dropdown.el-popper');

然后可以按索引选择一个选项:

代码语言:javascript
复制
$browser->elements('.el-select-dropdown__item')[2]->click();

或通过案文:

代码语言:javascript
复制
$selector = "//li[@class='el-select-dropdown__item']/span[text()='Option3']";
$browser->driver->findElement(WebDriverBy::xpath($selector))->click();

我看不到一种按值选择选项的方法,因为这些值不在HTML中的任何位置。

票数 2
EN

Stack Overflow用户

发布于 2018-09-20 07:20:24

只有当页面上只有一个el-select时,当您有多个没有办法识别它们或添加标识符时,才能这样做。

票数 0
EN

Stack Overflow用户

发布于 2018-09-21 20:20:45

@Lionslair是对的:如果您在页面中使用了多个el-select,@JonasStaudenmeir的解决方案将返回错误。

为了使它工作,我使用javascript执行。您可以在自定义BrowserComponent中添加此函数:

代码语言:javascript
复制
public function elSelectDropdownClose(Browser $browser)
{
    $browser->script(
<<<EOT
    Array.prototype.slice.call(document.querySelectorAll('.el-select-dropdown.el-popper:not([style*=\"display: none\"])')).map(function(el){
        el.style.display = 'none'
    })
EOT
    );
}
public function elSelectDropdownClick(Browser $browser, $index)
{
    $browser->script(
<<<EOT
    document.querySelectorAll('.el-select-dropdown.el-popper:not([style*=\"display: none\"]) .el-select-dropdown__item')[$index].click()
EOT
    );
    $this->elSelectDropdownClose($browser);
}

要运行测试:

代码语言:javascript
复制
$browser
    ->click('.el-select.first')
    ->elSelectDropdownClick(0);

$browser
    ->click('.el-select.second')
    ->elSelectDropdownClick(2);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49514382

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档