无法使用量角器单击按钮。按钮文字在子范围内

时间:2019-06-20 09:59:28

标签: angular jasmine protractor automated-tests

无法使用量角器单击按钮。 DOM如图所示。

下面是一些我已经尝试过的定位器。

  1. element(by.xpath(“(// div [@ class ='mat-drawer-backdrop ng-star-inserted'])2 //以下同级:: mat-sidenav // div // mat-nav-list // button“))
  2. element(by.xpath(“(((// div [@ class ='mat-drawer-inner-container'])2 // button // div)”)
  3. element(by.deepCss(“ mat-button-ripple mat-ripple”))
  4. element(by.deepCss(“ mat-button-wrapper”));
  5. element(by.xpath(“ // div [@ class ='mat-button-focus-overlay']”))
  6. element(by.xpath(“ // span [contains(。,'LOOK')]”))) 还有其他一些xpath,cssContainingText组合

错误1:在点(78,106)不可单击。其他元素将获得点击:...

错误2:使用定位器找不到元素:By(css选择器,* / deep / mat-button-ripple mat-ripple)等等

预期:要单击的“查看”按钮 实际:点击未登陆按钮

2 个答案:

答案 0 :(得分:1)

似乎当您收到错误1时,您正在正确定位该元素,它只是返回了not clickable at point...错误。您可以尝试创建一个滚动到该元素的函数,然后等待其被单击。请尝试以下操作:

const EC = protractor.ExpectedConditions;
const yourElement = ;  // <--- whatever locator worked

const clickElement = async () => {
    await browser.executeScript('arguments[0].scrollIntoView(true)', yourElement.getWebElement());
    await browser.wait(EC.elementToBeClickable(yourElement), 5000);
    await yourElement.click();
};

也可以尝试使用这种类型的定位器:
element(by.css('.mat-nav-list.mat-list-base button span'));

答案 1 :(得分:1)

因为我没有您的html页面源,所以我将开始从查看。在html页面之后,如果在量角器中使用对象页面,则可以使用:

var EC =  protractor.ExpectedConditions;
var button = element(by.css("mat-slidenav.layout-navigator .mat-nav-list button.mat-list-header"));


this.clickLookButton = function(){
browser.wait(EC.presenceOf(button));
browser.wait(EC.elementToBeClickable(button));
browser.executeScript("arguments[0].click();", button.getWebElement());
};

您可以使用量角器单击功能代替代码行

browser.executeScript("arguments[0].click();", button.getWebElement());

如果使用量角器单击功能:

button.click();

祝你好运!