无法使用Selenium Webdriver JS单击或提交按钮

电脑

我在尝试使用selenium-webdriverjs运行的测试脚本上单击或提交按钮时遇到问题。

我使用以下NPM模块:

  • 硒web驱动程序
  • 摩卡咖啡
  • chai
  • 承诺的柴

填写表格后,我无法单击按钮进入仪表板。我突出显示了该按钮,但不会通过鼠标操作单击它。

如果有帮助,以下是一些屏幕截图(我在测试过程中手动将它们拍摄了):

填写电子邮件和密码部分后,单击“记住我”按钮

鼠标悬停在登录按钮上

在最后一张图片上,我想单击“登录”按钮,由于显示了预期的CSS效果,因此鼠标应悬停在其上,然后以某种方式前进至下一页。

这是我完整的测试脚本:

var driver = require('selenium-webdriver'),
      chai = require('chai'),
    expect = chai.expect;

    chai.use(require('chai-as-promised'));

describe('Webdriver - Admin Page Tests - ', function() {

    beforeEach(function() {
        this.timeout(10000);
        this.driver = new driver.Builder().withCapabilities(driver.Capabilities.firefox()).build();
        return this.driver.get('https://admin.example.us/en-US/sign-in');
    });

    afterEach(function() {
        return this.driver.quit();
    });

    describe('Login verification -', function() {

    it('filling in credentials and accessing the portal', function () {
            this.driver.findElement({
                css: '#app > div > div > div > div > form > div:nth-child(2) > input'
            }).sendKeys('[email protected]');

            this.driver.findElement({
                css: '#app > div > div > div > div > form > div:nth-child(3) > input'
            }).sendKeys('example');

            this.driver.findElement({
                css: '#app > div > div > div > div > form > div:nth-child(4) > input[type="checkbox"]'
            }).click();

            var formButton = this.driver.findElement({
                css: '#app > div > div > div > div > form > div:nth-child(5) > button'
            });

            this.driver.actions()
                .mouseMove(formButton)
                .click()
                .perform();

            return expect(this.driver.getCurrentUrl()).to.eventually.equal('https://admin.example.us/en-US/dashboard');
        });
    });
});

这是我运行测试脚本时遇到的错误:

1) Webdriver PC6 - Admin Page Tests -  Login verification - filling in credentials and accessing the portal:

      AssertionError: expected 'https://admin.example.us/en-US/sign-in' to equal 'https://admin.example.us/en-US/dashboard'
      + expected - actual

      -https://admin.example.us/en-US/sign-in
      +https://admin.example.us/en-US/dashboard

上面的错误基本上确认了我的问题,即我无法正确单击登录按钮并前进到下一页。

这是登录表单的样子(我从中删除了样式和react-id):

<div>
  <h2>
    <span>Sign In</span>
    <span></span>
    <button type="button">
      <div>
        <span class="material-icons">help</span>
        <span>help</span>
      </div>
    </button>
  </h2>
  <form name="auth">
    <div class="Form-errorSummary">
      <ul></ul>
    </div>
    <div >
      <label for="mui-id-1">E-mail</label>
      <input required="" name="email" value="" type="text" id="mui-id-1">
      <hr><hr>
    </div>
    <div>
      <label for="mui-id-2">Password</label>
      <input name="password" required="" type="password" id="mui-id-2">
      <hr><hr>
    </div>
    <div>
      <input type="checkbox" name="remember">
      <div>
        <div>
        </div>
        <div>
          <div>
            <svg viewBox="0 0 24 24">
              <path d="M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z"></path>
            </svg>
            <svg viewBox="0 0 24 24">
              <path d="M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z">
              </path>
            </svg>
          </div>
          <div>
          </div>
          <div>
          </div>
        </div>
        <label for="mui-id-48">Remember me</label>
        <div></div>
      </div>
    </div>
    <div>
      <button tabindex="0" type="submit">
        <div>
          <div>
            <span>Sign In</span>
          </div>
        </div>
      </button>
    </div>
  </form>
</div>

我尝试了其他方法,例如在findElement部分使用click函数,例如:

this.driver.findElement({
  css: '#app > div > div > div > div > form > div:nth-child(5) > button'
}).click();

但这是行不通的。使用以下几行在findElement上不使用sendKeys:

this.driver.findElement({
  css: '#app > div > div > div > div > form > div:nth-child(5) > button'
}).sendKeys(driver.Key.ENTER);

或者

this.driver.findElement({
  css: '#app > div > div > div > div > form > div:nth-child(5) > button'
}).sendKeys(driver.Key.RETURN);

当我在chrome实例中将表单置于相同状态时,可以使用以下代码轻松地在chrome dev工具中单击带有香草JS的按钮:

document.querySelector('#app > div > div > div > div > form > div:nth-child(5) > button').click()

但是当我尝试在测试脚本中使用executeScript时,它不起作用:

this.driver.executeScript("document.querySelector('#app > div > div > div > div > form > div:nth-child(5) > button').click()");

我仍然收到与上述相同的错误,我停留在登录页面上并且无法前进。

电脑

当找到某些元素和期望时,我可以通过添加睡眠功能来等待页面完全加载来使测试通过:

this.driver.sleep(250)

我弄乱了时间,似乎250ms是实现我的目的所需的最少时间,而又不会使测试时间太长。

这是在我的代码中实现时的外观:

var driver = require('selenium-webdriver'),
      chai = require('chai'),
    expect = chai.expect;

    chai.use(require('chai-as-promised'));

describe('Webdriver - Admin Page Tests - ', function() {

    beforeEach(function() {
        this.timeout(10000);
        this.driver = new driver.Builder().withCapabilities(driver.Capabilities.firefox()).build();
        return this.driver.get('https://admin.example.us/en-US/sign-in');
    });

    afterEach(function() {
        return this.driver.quit();
    });

    describe('Login verification -', function() {

    it('filling in credentials and accessing the portal', function () {
        this.driver.sleep(250);

        this.driver.findElement({
            css: '#app > div > div > div > div > form > div:nth-child(2) > input'
        }).sendKeys('[email protected]');

        this.driver.findElement({
            css: '#app > div > div > div > div > form > div:nth-child(3) > input'
        }).sendKeys('example');

        this.driver.findElement({
            css: '#app > div > div > div > div > form > div:nth-child(4) > input[type="checkbox"]'
        }).click();

        var formButton = this.driver.findElement({
            css: '#app > div > div > div > div > form > div:nth-child(5) > button'
        });

        this.driver.actions()
            .mouseMove(formButton)
            .click()
            .perform();

        this.driver.sleep(250);

        return expect(this.driver.getCurrentUrl()).to.eventually.equal('https://admin.example.us/en-US/dashboard');
        });
    });
});

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

无法使用Selenium WebDriver单击“浏览”按钮

来自分类Dev

无法使用 Selenium WebDriver w Python 选择/单击按钮

来自分类Dev

无法使用 selenium webdriver 在 Gmail 中单击撰写按钮

来自分类Dev

无法使用WebDriver单击按钮

来自分类Dev

无法使用Selenium Webdriver单击()或Submit()输入

来自分类Dev

无法使用Selenium WebDriver单击链接

来自分类Dev

无法使用Selenium WebDriver单击链接

来自分类Dev

无法单击到div按钮Selenium Webdriver

来自分类Dev

无法单击此按钮Selenium Webdriver Python

来自分类Dev

无法单击Selenium Webdriver中的单选按钮

来自分类Dev

无法单击到div按钮Selenium Webdriver

来自分类Dev

WebDriver:无法单击“单选按钮”

来自分类Dev

无法使用watir-webdriver单击按钮

来自分类Dev

无法使用Selenium WebDriver在元素上单击/鼠标

来自分类Dev

无法在python中使用Selenium WebDriver单击链接

来自分类Dev

无法在python中使用Selenium WebDriver单击链接

来自分类Dev

无法单击使用Selenium WebDriver的<div>所作的下拉列表

来自分类Dev

无法使用Selenium Webdriver 3.0.1单击注销链接

来自分类Dev

Selenium Webdriver-无法单击按钮-Finds元素

来自分类Dev

无法单击按钮并使用Selenium WebDriver从下拉列表中选择元素

来自分类Dev

无法使用Selenium WebDriver单击位于<div>弹出窗口上的按钮

来自分类Dev

Selenium Webdriver识别按钮但不单击

来自分类Dev

在Selenium WebDriver中单击按钮-Java

来自分类Dev

在Selenium WebDriver中单击按钮-Java

来自分类Dev

使用Selenium WebDriver自动在chrome:// extensions页面上单击按钮

来自分类Dev

如何单击使用<span>标记为Selenium Webdriver创建的按钮

来自分类Dev

如何单击使用<span>标记为Selenium Webdriver创建的按钮

来自分类Dev

无法检查Selenium WebDriver中的单选按钮

来自分类Dev

Selenium Webdriver单击警报

Related 相关文章

  1. 1

    无法使用Selenium WebDriver单击“浏览”按钮

  2. 2

    无法使用 Selenium WebDriver w Python 选择/单击按钮

  3. 3

    无法使用 selenium webdriver 在 Gmail 中单击撰写按钮

  4. 4

    无法使用WebDriver单击按钮

  5. 5

    无法使用Selenium Webdriver单击()或Submit()输入

  6. 6

    无法使用Selenium WebDriver单击链接

  7. 7

    无法使用Selenium WebDriver单击链接

  8. 8

    无法单击到div按钮Selenium Webdriver

  9. 9

    无法单击此按钮Selenium Webdriver Python

  10. 10

    无法单击Selenium Webdriver中的单选按钮

  11. 11

    无法单击到div按钮Selenium Webdriver

  12. 12

    WebDriver:无法单击“单选按钮”

  13. 13

    无法使用watir-webdriver单击按钮

  14. 14

    无法使用Selenium WebDriver在元素上单击/鼠标

  15. 15

    无法在python中使用Selenium WebDriver单击链接

  16. 16

    无法在python中使用Selenium WebDriver单击链接

  17. 17

    无法单击使用Selenium WebDriver的<div>所作的下拉列表

  18. 18

    无法使用Selenium Webdriver 3.0.1单击注销链接

  19. 19

    Selenium Webdriver-无法单击按钮-Finds元素

  20. 20

    无法单击按钮并使用Selenium WebDriver从下拉列表中选择元素

  21. 21

    无法使用Selenium WebDriver单击位于<div>弹出窗口上的按钮

  22. 22

    Selenium Webdriver识别按钮但不单击

  23. 23

    在Selenium WebDriver中单击按钮-Java

  24. 24

    在Selenium WebDriver中单击按钮-Java

  25. 25

    使用Selenium WebDriver自动在chrome:// extensions页面上单击按钮

  26. 26

    如何单击使用<span>标记为Selenium Webdriver创建的按钮

  27. 27

    如何单击使用<span>标记为Selenium Webdriver创建的按钮

  28. 28

    无法检查Selenium WebDriver中的单选按钮

  29. 29

    Selenium Webdriver单击警报

热门标签

归档