量角器通过名称标签获取元素

protractor get element by name tag

本文关键字:标签 获取 元素 量角器      更新时间:2023-09-26

目前我正在使用量角器和Selenium web Driver。

我有以下问题:

我有一个html页面,我让量角器点击一个按钮。然后弹出一个窗口。此窗口包含一个名称为"Description"的文本框:

<input type="Text" name="Description" ... />

现在,当我尝试以下操作时:

element(by.css('[name="Description"]')).sendKeys("rabbababab");

浏览器什么都不做,但量角器不抛出错误。没有文本输入到文本框中。不幸的是,名称是识别输入文本框的唯一方法。

我做错了什么?

直接按名称选择也可以:

element(by.name('Description')).sendKeys("rabbababab");

好了,伙计们,我找到问题了。

这不是一个警告,它只是一个div,所有其他控件都锁定了用户输入。但对话框覆盖了一个文本框,它具有相同的css属性。所以量角器只是写入覆盖的文本框,我看不见它…

问题解决了

有时,如果该元素在iframe内,则必须切换到该iframe。只要检查是否有可用的iframe或modal ?

在protractor中有一个内置的提示处理程序,您可以在其中识别它,然后将数据发送到您想要的输入字段。-

browser.Alert.sendKeys("rabbababab");

注意:弹出窗口应该有一个输入,它可以接受一些数据到它,否则你的命令将失败。

如果上述解决方案不起作用,然后尝试通过切换到弹出窗口发送数据,然后向其发送文本。-

browser.driver.switchTo().alert().sendKeys('rabbababab');

如果有很多提示,那么你可以使用窗口句柄函数切换到你想要的那个。-

browser.getAllWindowHandles().then(function(handles){
    browser.switchTo().window(handles[1]).then(function(){ //change the array index based on your pop-up's count
        element(by.css('[name="Description"]')).sendKeys("rabbababab");
    });
});

希望能有所帮助。

也许您的应用程序中有多个name="Description"的对象。你可以在Chrome中找到:

    右键单击对象
  1. 点击Inspect元素
  2. 按CTRL + F
  3. 输入[name="Description"],看看能找到多少个结果。

    元素(by.css ([name = "描述"]))

相同
$('[name="Description"]')

如果你发现不止一个,那么你可以尝试以下操作:1. 在向字段发送键之前,尝试单击该字段

2。

// This will search for the element of input with the name="Description" attribute
$('input[name="Description"]').sendKeys('rabbababab');

3。在向它发送密钥之前,您可以尝试输入以下行:browser.waitForAngular ();//等待,直到angular应用加载

$("输入[name =描述]") .sendKeys("rabbababab");或元素(by.css(输入[name =描述])) .sendKeys("rabbababab");