量角器按名称标签获取元素

时间:2015-10-07 10:06:21

标签: javascript selenium testing selenium-webdriver protractor

目前我正在使用量角器和Selenium网络驱动程序。

我有以下问题:

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

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

现在,当我尝试以下内容时:

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

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

我做错了什么?

6 个答案:

答案 0 :(得分:7)

直接按名称选择也适用:

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

答案 1 :(得分:2)

好的伙计们,我发现了这个问题。

它不是一个警报,它只是一个div,所有其他控件都被锁定用户输入。但是Dialog包含一个TextBox,它具有相同的css属性。因此,量角器只是写入覆盖的TextBox,我无法看到它......

问题解决了

答案 2 :(得分:1)

有时,如果该元素位于iframe内,则必须切换到该iframe。只需检查是否有任何iframe或模态可用?

否则你的代码似乎是正确的。

答案 3 :(得分:0)

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

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");
    });
});

希望它有所帮助。

答案 4 :(得分:0)

也许你有多个对象名称=&#34;描述&#34;在你的申请中。 你可以在Chrome中找到它:

  1. 右键单击对象
  2. 点击Inspect element
  3. 按CTRL + F
  4. 输入[name =&#34;说明&#34;],看看它找到了多少结果。

    元素(by.css(&#39; [名称=&#34;说明&#34;]&#39;))

  5. 相同
    $('[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(); //等到角度应用加载

    让我们知道它是如何运作的。

答案 5 :(得分:0)

尝试使用它, $('input [name = Description]') .sendKeys(“ rabbababab”); 要么 element(by.css('input [name = Description]')) .sendKeys(“ rabbababab”);