当前位置: 首页 > 知识库问答 >
问题:

如何编写测试以单击量角器下拉菜单中的选项?

薛文斌
2023-03-14

我正在为我的网站登录和注销功能编写一个简单的量角器测试。登录测试运行正常,但我不知道如何编写注销测试,因为注销链接在将鼠标悬停在图标上后显示在下拉菜单中

<div class="dropdownx">
  <a href="#link" class="my-account"><i class="fa fa-user"></i></a>
  <div class="dropdownx-content" style="text-align:center; margin-left:-60px; ">
    <p><a href="#account">My Account</a></p>
    <p><a href="#order_history">Order History</a></p>
    <p><a href="#downloads">Downloads</a></p>
    <p><a href="#transactions">Transactions</a></p>
    <p><a href="#wishlist" id="wishlist-total">Wish List (0)</a></p>
    <p><a href="#logout">Logout</a></p>
  </div>
</div>

我如何访问最后一个

describe('To test mdpocket login window', function(){
it('should be able to login', function() {
    browser.driver
    browser.driver.get('login_page_link');
    browser.driver.findElement(by.css('#input-email')).sendKeys("email@gmail.com");
    browser.driver.findElement(by.css('#input-password')).sendKeys("some_password_here");
    var login = browser.driver.findElement(by.css('#button-login'))
    login.click();
})
});

所以基本上我的问题是,我如何才能得到没有id,没有类的隐藏元素。我已经搜索过了,但到目前为止没有找到任何解决方案。请帮忙!

更新:我已尝试注销,但出现此错误进程退出,错误代码为1

var dropDown = browser.driver.findElement(by.css('.dropdownx'));
browser.actions().mouseMove(dropDown).perform();
browser.driver.findElement(By.xpath("//a[text() = 'Logout']")).click();

我的解决方案 :

var dropDown = browser.driver.findElement(by.css('.my-account'))
browser.actions().mouseMove(dropDown).perform();
browser.driver.findElement(By.xpath("//a[text() = 'Logout']")).click();

这东西对我有用!


共有2个答案

羊舌光赫
2023-03-14

这可能会有所帮助:

var dropDown = element(by.css(".dropdownx"));

browser.actions().mouseMove(dropDown).perform().then(function () {
    element(by.className('dropdownx-content')).all(by.tagName('a')).filter(function (elem, index) {
        return elem.getText().then(function (val) {
            return val === 'Logout'
        })
    }).first().click();
});
周鸿云
2023-03-14

首先,您需要移动鼠标光标并保持下拉元素。因此所有下拉菜单选项都变得可见。现在将光标移动到注销链接并单击。您可以按照以下代码操作:

代码片段

 var EC=protractor.ExpectedConditions;
 var dropDown=element(by.css(".dropdownx"));
 var logoutLink=element(by.css('a[href="#logout"]'));

 browser.actions().mouseMove(dropDown).perform().then(function(){
   browser.wait(EC.visibilityOf(dropDown),8000,'Logout Link is not visible');
   browser.actions().mouseMove(logoutLink).click().perform();
 });

仅供参考:更新下拉和注销链接定位器,以防上述定位器无法找到元素

 类似资料:
  • 我试图理解如何在量角器测试中连接事件。下面是一个最小化的例子,如果包含了第二个browser . sleep(browser . sleep(3000)),那么测试就通过了。因为promise来自click-event(element(by . tagname(' mat-form-field))。click())现在应该已经解决了。我想知道为什么考试没有通过。 会不会是因为promise是在点击

  • 我的页面上有一个下拉菜单。我测试量角器的目标是单击此下拉菜单中的一个选项,并让量角器检查结果: 我的量角器测试看起来像: 如果你想知道的话,ptor.ignoreSynchronization是启用的,因为我的网页不断地轮询后端的一些更新。 量角器在我运行测试时抛出以下错误: 我不明白这个错误是关于什么的。这个元素肯定是可见的,因为当我查看页面的源代码时,我可以在DOM结构中看到它。 善意的忠告

  • 嗨,我正在尝试自动启动下拉菜单。默认情况下,它的可见性是隐藏的。将鼠标悬停在它上面时,它的可见性属性显示为可见。我可以单击下拉菜单,但是在单击下拉菜单后,我的selenium脚本不能从下拉菜单中选择值。 错误:线程"main"org.openqa.selenium.ElementNotVisibleException异常:无法单击元素 HTML代码段

  • 问题内容: 我需要建立一个包含5个选项的菜单,单击某个菜单后,将出现一个新的子菜单。我完全不知道该怎么做。 问题答案: CSS没有点击处理程序。因此,不可能使用标准CSS。您可以使用一种称为“复选框hack”的方法,但是我谦虚地认为,它有点笨拙,并且会像您的用例要求那样在导航菜单中使用,这很尴尬。因此,我建议使用jQuery或Javascript。这是使用jQuery的一种非常简单的解决方案。 基

  • 有很多方法可以做到这一点,我已经尝试了很多方法,但是在做自动测试时,我不能从下拉菜单中选择一个项目。 “选择”是出现在下拉菜单中的默认选择,我希望自动化测试选择其中一个元素,不管是哪个 这是HTML代码 这是我的量角器档案 我尝试过使用by.cssElement、by.xpath等。当我运行上面的代码时,我没有得到任何错误,但它也没有选择任何元素。谢谢

  • 我使用量角器在角应用端到端测试。我试图点击选择框中的选项,但我有以下错误元素目前不可见,可能无法操纵。 我有这部分html: 在量角器测试中我有一行代码: 我想点击值为“草稿”的选项。你知道可能是什么问题吗?