Html代码
<button type="button" ng-click="submitPosition($event, true);navigate($event,'/#/project')" class="btn btn-main" name="submit">CREATE POSITION AND AUTOSOURCE</button>
我的代码。
两个按钮具有相同的类名,因此使用过滤器。
element.all(by.css('button.btn.btn-main')).filter(function(button,index){
return index == 1;
}).each(function(button){
button.click();
});
我收到此错误
UnknownError: unknown error: Element is not clickable at point (1049, 162). Other element would receive the click: <ul class="modal-breadcrumb list-unstyled block">...</ul>
(Session info: chrome=43.0.2357.132)
请帮帮我。
答案 0 :(得分:2)
根据错误,您似乎有一个模式阻止您的点击。没有看到剩下的代码,很难说,但你需要解决这个问题。也就是说,整体问题可能是您的定位策略。在这里使用element(by.cssContainingText('button.btn.btn-main', 'CREATE POSITION AND AUTOSOURCE'));
是过分的,也许试图点击错误的东西?
我会尝试:
$$('button.btn.btn-main').get(1); // assuming index 1 is the button you're after
或
$('button[name="submit"]');
或者如果它是唯一的提交:
<!-- 1. The <div> tag will contain the <iframe> (and video player) -->
<div id="player" style="pointer-events: none;"></div>
<script> // 2. This code loads the IFrame Player API code asynchronously.
var tag = document.createElement('script');
tag.src = "http://www.youtube.com/player_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
// 3. This function creates an <iframe> (and YouTube player)
// after the API code downloads.
var player;
function onYouTubePlayerAPIReady() {
player = new YT.Player('player', {
playerVars: { 'autoplay': 1, 'controls': 0,'loop': 1,'playlist': '2oqCAmfc0D0','autohide':1,'showinfo': 0,'disablekb': 1,'rel': 0,'wmode':'opaque' },
videoId: '2oqCAmfc0D0',
width: '100%',
height: '800px',
events: {
'onReady': onPlayerReady}
});
}
// 4. The API will call this function when the video player is ready.
function onPlayerReady(event) {
event.target.mute();
}
</script>
答案 1 :(得分:0)
这可能是由于以下原因造成的,
您要点击的按钮位于页面底部(在页面上不可见)。 你必须向下滚动一下才能在浏览器中显示按钮。然后你可以点击它。
您可以使用mouseMove()首先滚动到元素:
browser.actions().mouseMove(btnSave).click();
或
使用browser.executeScript()函数进行滚动:
browser.executeScript('window.scrollTo(0,document.body.scrollHeight);');
您应该为您的按钮指定一个特定ID,并使用by id点击
element(by.id('buttonId')).click();
答案 2 :(得分:0)
我不确定模态最终会消失吗?或者如果你必须点击其他东西让模态消失但我发现使用expected conditions有帮助
var button = element.all(by.css('button.btn.btn-main')).first();
var IsClickable = EC.elementToBeClickable(button);
browser.wait(IsClickable, 5000, "Failed to click the button").then(function() {
button.click();
});