Javascript 量角器按名称标记获取元素
目前我正在使用量角器和Selenium web驱动程序 我有以下问题: 我有一个html页面,我让量角器点击一个按钮。然后弹出一扇窗户。此窗口包含一个名为“Description”的文本框: 浏览器不执行任何操作,但量角器不会抛出错误。文本框中未键入任何文本。不幸的是,名称是识别输入文本框的唯一方法Javascript 量角器按名称标记获取元素,javascript,selenium,testing,selenium-webdriver,protractor,Javascript,Selenium,Testing,Selenium Webdriver,Protractor,目前我正在使用量角器和Selenium web驱动程序 我有以下问题: 我有一个html页面,我让量角器点击一个按钮。然后弹出一扇窗户。此窗口包含一个名为“Description”的文本框: 浏览器不执行任何操作,但量角器不会抛出错误。文本框中未键入任何文本。不幸的是,名称是识别输入文本框的唯一方法 我做错了什么?有时,如果该元素在iframe中,则必须切换到该iframe。只需检查是否有iframe或modal可用 否则,您的代码似乎是正确的。量角器中有一个内置的提示处理程序,您可以在其中识别
我做错了什么?有时,如果该元素在iframe中,则必须切换到该iframe。只需检查是否有iframe或modal可用
否则,您的代码似乎是正确的。量角器中有一个内置的提示处理程序,您可以在其中识别它,然后将数据发送到所需的输入字段中。这是怎么做的-
browser.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");
});
});
注意:弹出窗口应该有一个输入,它可以接受一些数据,否则您的命令将失败
如果上述解决方案不起作用,则尝试通过切换到弹出窗口发送数据,然后向其发送文本。以下是如何-
browser.driver.switchTo().alert().sendKeys('rabbababab');
如果有许多提示,则可以使用窗口句柄函数切换到所需的提示。这是怎么做的-
browser.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");
});
});
希望有帮助。好了,伙计们,我发现了问题所在 它不是一个警报,只是一个div,所有其他控件都被锁定以供用户输入。但是对话框包含一个文本框,它具有相同的css属性。所以量角器只是写进有盖的文本框,我看不见
问题解决了直接按名称选择也有效:
element(by.name('Description')).sendKeys("rabbababab");
也许您的应用程序中有多个具有name=“Description”的对象。 您可以在Chrome中找到:
$('[name="Description"]')
如果找到多个,则可以尝试以下操作:
1.在向字段发送密钥之前,请尝试单击该字段
二,
三,。
在向其发送密钥之前,可以尝试放置以下行:
browser.waitForAngular();//等待angular应用程序加载
让我们知道它是如何工作的。试着用这个,
$('input[name=Description]').sendKeys(“rabbabababab”);
或
元素(by.css('input[name=Description]')).sendKeys(“rabbababab”) 根据给出的信息,没有问题,代码应该可以工作,对我来说,选择元素by
“[name=”””
语法在量角器中工作。您可以使用promise并使用自定义回调函数来检查DOM元素是否已找到绑定。嘿,谢谢你的回答。由于我的弹出窗口包含许多输入框,有没有办法识别它们?像browser.Alert.txt[“name”].sendKeys(“”;?)??对于Alert
对象,我认为没有任何类似的选项。但是,您可以使用switchTo()
函数和getAllWindowHandles()
来执行此操作。更新了答案。嗯,不知怎的,这似乎不是一个警报()。原因量角器显示“无警报窗口”。。。这更像是一个对话。。。。这很奇怪,因为当我检查对象时,它是一个div,所以量角器应该能识别它…@AdrianMelzer使用getAllWindowHandles()
帮助识别弹出窗口来执行switchTo()
window操作?或者它也给出了一个错误?你能补充一些解释来更好地理解答案吗?谢谢
// This will search for the element of input with the name="Description" attribute
$('input[name="Description"]').sendKeys('rabbababab');