Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/453.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我必须在页面中输入text in元素,但是页面有四个具有相同属性的元素_Javascript_Angularjs_Selenium_Protractor - Fatal编程技术网

Javascript 我必须在页面中输入text in元素,但是页面有四个具有相同属性的元素

Javascript 我必须在页面中输入text in元素,但是页面有四个具有相同属性的元素,javascript,angularjs,selenium,protractor,Javascript,Angularjs,Selenium,Protractor,我必须在页面中输入text in元素,但是页面有四个具有相同属性的元素,我找不到唯一的定位器,使用量角器角度js网页?有人能帮忙吗 以下是webelements: <input type="text" ng-model="size.quantity" class="isd-txt-btn ng-pristine ng-valid" ng-change="quantityChanged(size)" ng-disabled="readOnly"> 如果有多个元素可以与选择器匹配,请尝

我必须在页面中输入text in元素,但是页面有四个具有相同属性的元素,我找不到唯一的定位器,使用量角器角度js网页?有人能帮忙吗

以下是webelements:

<input type="text" ng-model="size.quantity" class="isd-txt-btn ng-pristine ng-valid" ng-change="quantityChanged(size)" ng-disabled="readOnly">

如果有多个元素可以与选择器匹配,请尝试按其索引进行匹配:

element.all(by.css('input[type="text"]')).get(2).sendKeys('someText');
设置目标
input
get()

的适当索引(从
0
开始),您可以使用element.all(locator).get(index)方法将数据输入必填字段。确定目标输入字段索引(0或1或2或3)

代码

      element.all(locator).get(index).sendKeys("Test Data");

如果我理解正确,为什么不在输入标记中添加
id=“textFieldId”
,然后在Javascript中调用
document.getElementById('textFieldId').value=“Something”
。首选方法不是id,因为id需要唯一,而且很容易意外复制它们。在您的上下文中,这可能并不重要,但作为一个选项,您可以使用空CSS类标记元素并选择(因此,是的,您将使用四个空CSS类)。我明白这似乎是一个黑客(我真的不喜欢),但信不信由你,这是推荐的方法,而不是IDs。另一种方法是对“input”的directive元素进行“find”,它会将所有输入元素作为dict返回给您。然后您可以通过索引进行选择。不太好,但它可以工作,让你远离ID。嗯……或者只是在4个文本字段上添加一个唯一的ID……如果页面上有4个完全相同的元素,你可以尝试使用索引。没有必要添加黑客式的“空CSS类”。如果从不移动或添加新元素,索引将起作用。只需添加一个唯一的ID。