【问题标题】:browser.actions().mouseMove() creates syntax error with sendKeysbrowser.actions().mouseMove() 使用 sendKeys 创建语法错误
【发布时间】:2020-04-30 22:35:48
【问题描述】:

我正在开发测试自动化并使用带有 jasmine 框架的量角器。在处理自动完成 select(选择下拉菜单,即国家名称下拉菜单)时。我想以browser.actions().mouseMove(addMember.getLocationInput().sendKeys('UAE')).perform(); 的方式将键发送到此自动完成选择下拉列表,但它会产生语法错误。当我删除 sendKeys('UAE') 时,它会删除语法错误,但我必须向它发送密钥。谁能帮我把钥匙发送到这个自动完成选择。您可以在附件中找到完整的测试用例。提前致谢

it('Should add Instructor successfully',()=>{
        return new Promise((res)=>{
            let email = Math.floor(Math.random()*10000)+1;
            addMember.getAddMemberSubMenu().click().then(()=>{
                setTimeout(()=>{
                    addMember.getFirstNameInput().sendKeys("John");
                    addMember.getLastNameInput().sendKeys("Doe");
                    addMember.getEmailInput().sendKeys(email+"@gmail.com")
                    addMember.getUserRolesInput().element(by.cssContainingText('option','Instructor')).click();
                    addMember.getCountryCodeInput().element(by.cssContainingText("option","UAE (+65)")).click();
                    addMember.getPhoneNumberInput().sendKeys('231321321321'); 
                    //Here is the syntax error
                    browser.actions().mouseMove(addMember.getLocation().sendKeys('UAE')).perform(); 
                    browser.actions().sendKeys(Key.ARROW_DOWN).perform();
                    browser.actions().sendKeys(Key.ENTER).perform();
                    addMember.getSaveButton().click();
                    return new Promise((resolve)=>{
                        setTimeout(()=>{
                        expect(browser.getCurrentUrl()).toContain('people').then(()=>{
                            resolve();
                            res();
                            })
                        },browser.params.Waiting_time.AVERAGE);
                    });
                },browser.params.Waiting_time.HIGH);
            });
        });
    });

【问题讨论】:

  • addMember.getLocationInput().sendKeys('UAE') 返回承诺而不是元素。但是 mousemove 需要一个元素。所以你有一个语法错误
  • 为什么不在鼠标移动之前将键发送到位置元素?
  • 它说该元素不可交互
  • @VolkanAlbayrak 我看过另一个教程,可以将键发送到 mouseMove()
  • @VolkanAlbayrak 就像browser.actions().mouseMove(element(by.model("location")).sendKeys("london")).perform()

标签: angular browser automation protractor action


【解决方案1】:

我认为鼠标移动不能像您那样与 sendKeys 结合使用。 首先,您将鼠标移到元素上,如下所示:

browser.actions().mouseMove(addMember.getLocation()).perform(); 

然后如果你想发送密钥,你需要另一个代码:

addMember.getLocation().sendKeys('UAE');

【讨论】:

  • 我试过了。它说该元素不可交互
【解决方案2】:

我通过将browser.actions().mouseMove(addMember.getLocation()).perform() 更改为browser.actions().mouseDown(addMember.getLocation()).perform() 解决了我上面提到的问题,browser.actions().mouseDown(addMember.getLocation()).perform() 移动到元素,点击那里然后可以调用sendKeys()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-13
    • 1970-01-01
    • 1970-01-01
    • 2014-04-09
    • 2014-03-21
    • 2016-02-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多