2017-03-28 32 views
0

我已經嘗試了下面的代碼,但沒有點擊元素。單擊某個元素還有其他方法嗎?

global.elmCBSave.click(); 
    browser.sleep(2000); 
    browser.actions().mouseMove(global.elmCBSave.getWebElement()) 
     .click(protractor.Button.LEFT).perform();  
    browser.sleep(2000); 
    browser.actions().mouseMove(global.elmCBSave.getWebElement()) 
     .mouseDown().mouseUp() 
     .click(protractor.Button.LEFT).perform();  
    browser.sleep(2000); 

元素的屬性沒有被標記爲按鈕,它被標記爲一個範圍,看起來像一個鏈接。

<a class="x-btn x-unselectable x-box-item x-toolbar-item x-btn-default-small" style="min-width: 75px; right: auto; left: 328px; top: 0px; margin: 0px;" hidefocus="on" unselectable="on" role="button" aria-hidden="false" aria-disabled="false" id="button-1011" tabindex="-1" data-componentid="button-1011"> 
     <span id="button-1011-btnWrap" data-ref="btnWrap" role="presentation" unselectable="on" style="" class="x-btn-wrap x-btn-wrap-default-small "> 
      <span id="button-1011-btnEl" data-ref="btnEl" role="presentation" unselectable="on" style="" class="x-btn-button x-btn-button-default-small x-btn-text x-btn-button-center "> 
       <span id="button-1011-btnIconEl" data-ref="btnIconEl" role="presentation" unselectable="on" class="x-btn-icon-el x-btn-icon-el-default-small " style=""></span> 
       <span id="button-1011-btnInnerEl" data-ref="btnInnerEl" unselectable="on" class="x-btn-inner x-btn-inner-default-small">Save</span> 
      </span> 
     </span> 
    </a> 

的global.elmCBSave是:用cssContainingText因爲取消按鈕具有相同的CSS:

global.elmCBSave = element(by.cssContainingText('.x-btn-inner.x-btn-inner-default-small', 'Save')); 

<span id="button-1013-btnInnerEl" data-ref="btnInnerEl" unselectable="on" class="x-btn-inner x-btn-inner-default-small">Cancel</span> 

我也試着發送TAB鍵,然後按ENTER鍵,但沒有任何反應,它只關注按鈕。

回答

0

嘗試以下的任何一個。希望它可以幫助你。

正如您所見,保存並取消具有相同的值,因此無法使用任何選擇器將它們分開。 您可以嘗試索引它們如下:

browser.findElement(by.xpath("//span[contains(@id,'button')][2]")).click(); 
browser.findElement(by.xpath("//span[contains(@id,'button')][3]")).click(); 

或透過文字。

browser.findElement(by.xpath("//span[contains(text(), 'Save')]").click(); 
browser.findElement(by.xpath("//span[contains(text(), 'Cancel')]").click(); 

這仍然是使用Dyanmic選擇。

browser.findElement(by.cssSelector("*[id^='button'][id$='InnerEl']")).click(); 

瞭解更多Protractor API

+0

#1和#3線不能使用,因爲整數有動態的。 #2我在「.click()」之前添加了一個右括號,但它仍然沒有單擊該元素。 –

+0

'class =「x-btn-inner x-btn-inner-default-small」data-ref =「btnInnerEl」'這是怎麼回事?這些也是動態的? –

+0

這是我的當前元素 global.elmCBSave =元件(by.cssContainingText( '的x BTN-inner.x-BTN-內 - 缺省 - 小。', '保存')); –

相關問題