量角器-使用by.id时“为定位器找到多个元素”

时间:2019-06-28 17:06:31

标签: vue.js protractor

我们正在使用by.id来引用元素,但是量角器仍在抛出此消息“为定位器By(css选择器,* [id =“ txt1”])找到多个元素,并且它返回的值使用getText()时的标签。该行为似乎很奇怪。当我们从Javascript引用该元素时,引用似乎很好。感谢您在解决此问题方面的帮助。

//Code in Protractor, it seems to be referring to a label
var txtEl=element(by.id('txt1'));

//Code in VueJS, where the ID is set to each InputText
                   //This is the label
                    <label class="form__label" v-model="form.label" v-show="form.hasOwnProperty('label')">
                        {{ index }}. {{ form.label }}
                    </label>

        <el-input type="text"
                  :id="currentField.id"
                  :placeholder="currentField.isPlaceholderVisible ? currentField.placeholder : ''"
                  v-model="currentField.value">
        </el-input>

//Code in Javascript, works fine, shows the right value
console.log("Value:" + this.$refs.form1["txt1"].value);

3 个答案:

答案 0 :(得分:0)

此时尝试打印源代码,您将清除DOM中具有相似ID的元素

答案 1 :(得分:0)

尝试这个

element(by.css('input[type = "text"]'))

答案 2 :(得分:0)

经过令人沮丧的10个小时的挖掘,终于找到了答案。

  1. 为设置“:name”。不要设置“:id”。像这样:name =“ currentField.id”
  2. 在量角器代码中,使用名称来提取元素。像这样 - var inputtxt = element(by.css(“ input [name ='txt1']”)));

  3. 不要使用getText(),它的行为很奇怪,返回空。使用inputtxt.getAttribute('value')),其中“ value”是分配给“ v-model”的基础字段

  4. 重要-通过设置browser.sleep(x ms)允许页面完全加载。否则,该元素将被多次检索,量角器将发出警告“存在多个元素...。”