我一直在努力点击使用Protractor的按钮。问题是,即使驱动程序找到该元素,但它仍然没有点击它。感谢任何帮助。谢谢提前。
以下是登录按钮的HTML:
div class="row mod-form-button">
<button id="sign_in" class="mod-main" tabindex="4">Sign in</button>
</div>
<div class="row">
<div class="row">
<span class="nowrap">Not a member yet?</span>
<a class="nowrap" data-component="spinner" id="create_account"
href="create_account?client_id=UDPWeb1&callback=https%3A%2F%2F-na1-stg1.login.com">
Get an Test ID</a>
</div>
量角器代码: 这是specs文件: // spec.js
describe(' Demo', function() {
it('Should Login to Demo Site', function() {
browser.waitForAngularEnabled(false);
browser.get('https://stage.com');
// var EC = protractor.ExpectedConditions;
// Waits for the element with id 'abc' to be clickable.
//browser.wait(EC.elementToBeClickable($('password')), 5000);
element(by.id('password')).sendKeys('123456');
element(by.id('username')).sendKeys('Tester@test.com');
//browser.sleep(35000);
var EC = protractor.ExpectedConditions;
// Waits for the element with id 'abc' to be clickable.
element(by.id('sign_in')).click();
browser.sleep(5000);
var el = element(by.id('sign_in'));
browser.executeScript('arguments[0].scrollIntoView()', el.getWebElement());
el.click();
// browser.wait(EC.elementToBeClickable($('sign_in')), 5000);
//browser.wait(EC.elementToBeClickable($('.btn.coral-btn.coral-btn-primary')), 5000);
//element(by.css('.btn.coral-btn.coral-btn-primary')).click();
// expect(element(by.binding('latest')).getText()).
// toEqual('5'); // This is wrong!
});
});
这是配置文件: //Config.js
exports.config = {
framework: 'jasmine',
seleniumAddress: 'http://localhost:4444/wd/hub',
allScriptsTimeout: 5000000,
specs: ['specs.js']
}
答案 0 :(得分:0)
我只使用Selenium-java进行exp,并使用它测试前端。 我用来测试的步骤与你的一样。
使用单击按钮,检查后是否存在。 (有时点击evt()比检查更早)。所以当它试图点击按钮时,按钮还不存在。
在您的情况下,我将执行以下步骤:
我希望它会有所帮助。
答案 1 :(得分:0)
您的代码非常混乱,您实际上声明了protractor.ExpectedConditions
,但您从未以正确的方式使用它。
然后要小心,因为所有的量角器方法都返回promises,因为所有操作都是异步的。你应该正确使用promises。
顺便说一句,试试这段代码,它应该等待元素可见,然后点击它:
var EC = protractor.ExpectedConditions;
var signinButton = element(by.id('sign_in'));
// waiting for 10 seconds that the button will be visible
browser.wait(EC.visibilityOf(signinButton ), 10000, "Button signin not visible");
browser.executeScript('document.querySelector("#sign_in").scrollIntoView()').then(function() {
signinButton.click().then(function() {
console.log('button has been clicked here');
});
});