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中的代码:
登录
预期行为(此操作手动进行):
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键手动登录时,文本光标仍在表单中,会发生什么情况?