如何提取所有标签标题值。以下是xml结构。 ulTopMenu
是悬停下拉列表。我正在使用量角器。
<ul id="ulTopMenu">
<li>
<li>
<li>
<ul class="submenu">
<li>
<a href="" title = "test2"></a></li>
<li>
<a href ="" title = "test1" ></a></li>
</ul>
</li>
</ul>
以下是我试过的
var menus = element.all(by.css('#ulTopMenu > li'));
var submenu = element.all(by.css('#ulTopMenu > li .submenu li')).all(by.tagName('a'));
browser.actions().mouseMove(menus.get(3)).perform().then(function () {
submenu.filter(function (elem, index) {
return elem.getAttribute('title').then(function (val) {
return val === 'test1'
})
}).first().click();
总是给我一个错误,说元素不可见
答案 0 :(得分:0)
如果没有实际执行代码并查看正在发生的事情,很难调试,但这是一个有根据的猜测 - 你不应该首先打开下拉列表本身:
var dropdown = element(by.id("ulTopMenu"));
var submenu = dropdown.$("ul.submenu");
var desiredMenuItem = submenu.$('li > a[title=test1]');
browser.actions()
.mouseMove(dropdown)
.mouseMove(submenu)
.click(desiredMenuItem)
.perform()
请注意我是如何使用CSS选择器通过标题找到链接的。
并且,请注意我在应用操作时所做的假设 - 看看您是否需要通过鼠标移动或点击来更改下拉菜单的打开方式。
您可能还需要在操作之间添加延迟 - 我们在类似情况下一直使用custom sleep()
browser action。
如果您只需要提取属性为title
的链接文本:
$$("#ulTopMenu ul.subMenu li > a[title]").getText().then(console.log);
答案 1 :(得分:0)
错误绝对正确。如果它是一个下拉菜单,那么子菜单通常如何显示?是的,你应该先点击它(下拉列表)。只有在子菜单可见后,您才能点击子菜单项。