Protractor 量角器:无法单击按钮

Protractor 量角器:无法单击按钮,protractor,Protractor,我是量角器e2e测试的新手。 使用量角器编写jasmine测试用例。 我在一个html文件中有两个按钮。我想选择特定的按钮(begin.html文件中的按钮) 这些都不起作用 元素(by.id('gotest'))。单击() by.linkUiSref('about-you') 在按钮上执行某些事件应导航到下一页(关于您) 请帮帮我 Text.html <div class="button"> <a ui-sref="begin"> <but

我是量角器e2e测试的新手。 使用量角器编写jasmine测试用例。 我在一个html文件中有两个按钮。我想选择特定的按钮(begin.html文件中的按钮)

这些都不起作用

元素(by.id('gotest'))。单击()

by.linkUiSref('about-you')

在按钮上执行某些事件应导航到下一页(关于您)

请帮帮我

Text.html

<div class="button">
    <a ui-sref="begin">
        <button class="green">Text</button>
    </a>
</div>

<ng-include src="'../begin.html'" class="hidden"></ng-include>
<div class="button">
    <button class="green" id="gotest" ui-sref="about-you">Start</button>
</div> 

正文
begin.html

<div class="button">
    <a ui-sref="begin">
        <button class="green">Text</button>
    </a>
</div>

<ng-include src="'../begin.html'" class="hidden"></ng-include>
<div class="button">
    <button class="green" id="gotest" ui-sref="about-you">Start</button>
</div> 

开始
试试看:

element(by.buttonText('Start')).click();

否则,请发送您遇到的错误。量角器工作快速且异步。因此,您的按钮单击可能在页面准备就绪之前就执行了,因此您会出现错误。要解决此问题,您可以首先尝试使用量角器中的wait函数查找元素,然后使用wait返回的承诺,您可以单击按钮

下面的代码可能会对您有所帮助-

var elementToClick = $('#gotest');
browser.wait(protractor.ExpectedConditions.elementToBeClickable(elementToClick), 10000)
.then ( function () {
    elementToClick.click();
});

希望这能解决你的问题

我假设您在尝试单击“右键”时在begin.html上?(即,不确定Text.html与此有何关系)。还有,你说的“不起作用”是什么意思?是的,您在begin.html上的即时消息是正确的(单击此处的事件发生)。是的,您在begin.html上的即时消息是正确的(单击此处的事件发生)。当我们在mobile中启动应用程序时,将首先显示text.html,然后显示begin.html。但是我们在desktop中访问相同的应用程序begin.html将包含在text.html中。我收到以下异常“消息:错误:等待量角器在11秒后与页面同步超时。aq.md……”我也尝试在配置文件中使用allscriptsTimeouts,但没有成功。你的应用程序是角度应用程序吗?如果不是,你需要在开始时添加这个“browser.ignoreSynchronization=true”,然后在你的应用程序变为角度时设置“browser.ignoreSynchronization=false”。是的,我们的应用程序是角度的。谢谢你的回复,在配置文件中,我给出了allscripts=100000毫秒,所以现在我在11秒错误后没有超时,但我看到了另一个错误“Jasmine规范超时。重置WebDriver控制流上一个活动任务是:位于[object object].WebDriver.WebDriver.schedule(C:\Users\pm\node\u modules\Gragractor\node\u modules\selenium WebDriver\lib\iver\WebDriver.js:345:15)的[object object].pregrator.executeAsyncScript(C:\Users\pm\node\u modules\pregrator\lib\pregrator.js:1141:26)位于[object object].pregrator.waitforangula我也用你上面提到的方式获取元素。如果你想在11秒后获得超时错误,你必须在配置文件中设置allscripts=10000ms,而不是1000000,因为这是我的第一篇文章,我无法清楚地解释。我不想超时错误…我的脚本应该触发一个单击事件,以便它导航到下一页。第一个测试没有执行。iit('Hello',function(){element(by.buttonext('Start'))。click();});iit('second page test'),function(){element(by.id('firstName'))。sendKeys('test');});为什么说抱歉,什么也没发生,请保持冷静,好好编码。