Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Selenium webdriver元素。click()未按预期方式运行(chrome、mocha)_Javascript_Unit Testing_Selenium_Selenium Webdriver_Automated Tests - Fatal编程技术网

Javascript Selenium webdriver元素。click()未按预期方式运行(chrome、mocha)

Javascript Selenium webdriver元素。click()未按预期方式运行(chrome、mocha),javascript,unit-testing,selenium,selenium-webdriver,automated-tests,Javascript,Unit Testing,Selenium,Selenium Webdriver,Automated Tests,我正在测试一个网站的登录功能,尽管我可以正确地找到登录按钮,。click()似乎没有按我预期的方式工作 首先,相关测试js代码: driver.sleep(1000) driver.findElement(By.name('email')).sendKeys(fakeEmail); driver.findElement(By.name('password')).sendKeys(fakePassword); driver.sleep(5000); driver.findElement(By.xp

我正在测试一个网站的登录功能,尽管我可以正确地找到登录按钮,
。click()
似乎没有按我预期的方式工作

首先,相关测试js代码:

driver.sleep(1000)
driver.findElement(By.name('email')).sendKeys(fakeEmail);
driver.findElement(By.name('password')).sendKeys(fakePassword);
driver.sleep(5000);
driver.findElement(By.xpath("//button[@type='submit']")).isEnabled()
.then(function(isEnabled) {
    console.log(isEnabled) // prints true
    var el = driver.findElement(By.name('password'));
    el.sendKeys(webdriver.Key.ENTER); //method 1
})
//note: these xpaths are correct. I am able to get inner text, for example
driver.findElement(By.xpath("//button[@type='submit']")).sendKeys(webdriver.Key.ENTER); //method 2
driver.findElement(By.xpath("//button[@type='submit']")).click(); //method 3
下面是登录按钮html中的代码:

登录

预期行为(此操作手动进行):

  • 鼠标悬停时,按钮变为颜色1
  • 单击后,按钮更改为颜色2
  • 假设电子邮件和密码正确,发布后,进入主页
  • 我在执行时看到:

  • 按钮更改为颜色2
  • 什么也没发生
  • 窗口保持打开状态,但如果我尝试手动单击按钮,则什么也不会发生
  • 我在js代码中标记了方法1-3,但没有一个方法给出预期的行为。我已经分别和联合尝试过了。我已经试着在做了这件事之后去主页,但我确实没有登录

    我的问题是:
    element.click()
    为什么不按我希望的方式运行

    编辑:我知道正在调用登录(表单),因为我有一个控制台日志。不过这里有一些有趣的事情:控制台中有一个“加载资源失败:服务器响应状态为403(禁止)”错误!如果我之后继续点击按钮,我会得到
    angular.js:8632帖子http://localhost:9000/api/session 403(禁止)
    。如果我手动执行此操作,则不存在该错误!知道为什么吗

    版本:

    "chai": "^4.1.0",
    "chai-as-promised": "^7.1.1",
    "chromedriver": "^2.31.0",
    "mocha": "^3.4.2",
    "selenium-webdriver": "^3.5.0",
    

    这是一个非常丑陋的解决方案。。。考虑到403个错误是主要问题,我只是

    driver.get('http://localhost:9000');
    driver.navigate().refresh();
    
    在测试开始时。所以它首先导航到localhost:9000;然后它再次导航到那里。然后它就会恢复新鲜。这就解决了问题


    虽然我不知道为什么,但确实如此。

    这里有一个非常丑陋的解决方案。。。考虑到403个错误是主要问题,我只是

    driver.get('http://localhost:9000');
    driver.navigate().refresh();
    
    在测试开始时。所以它首先导航到localhost:9000;然后它再次导航到那里。然后它就会恢复新鲜。这就解决了问题


    我不知道为什么,但确实如此。

    您同时执行SendKey并单击同一元素?findElement(By.xpath(“//button[@type='submit'])).sendKeys(webdriver.Key.ENTER);findElement(By.xpath(“//按钮[@type='submit']))。单击();我两个都试过了,但都不管用。我读到
    sendKeys(ENTER)
    也可以用来模拟点击。但是,这些方法都不起作用,我分别尝试了它们。你能发布测试页面的html吗?听起来好像您正在成功地找到元素,并单击它(如果它更改为color2)。你只是没有被重定向?我不仅没有被重定向,甚至连登录功能都没有。如果它确实让我登录,那么即使我没有被重定向,只要刷新页面就可以将我带到主屏幕。以下是周围的html表单:
    当您键入密码并立即按enter键手动登录时,文本光标仍在表单中,会发生什么情况?您同时执行SendKey并单击同一元素?findElement(By.xpath(“//button[@type='submit'])).sendKeys(webdriver.Key.ENTER);findElement(By.xpath(“//按钮[@type='submit']))。单击();我两个都试过了,但都不管用。我读到
    sendKeys(ENTER)
    也可以用来模拟点击。但是,这些方法都不起作用,我分别尝试了它们。你能发布测试页面的html吗?听起来好像您正在成功地找到元素,并单击它(如果它更改为color2)。你只是没有被重定向?我不仅没有被重定向,甚至连登录功能都没有。如果它确实让我登录,那么即使我没有被重定向,只要刷新页面就可以将我带到主屏幕。下面是周围的html表单:
    当您键入密码并立即按enter键手动登录时,文本光标仍在表单中,会发生什么情况?