簡體   English   中英

如何單擊 protractor 中被阻止的元素?

[英]How to click an element that is blocked in protractor?

我試圖單擊一個按鈕,但有時會在此按鈕前面出現一個彈出窗口,並且我的自動化腳本無法告訴我該元素已被攔截且不可點擊,我有一個 function 向下滾動到該元素,但這個其他元素仍然得到在前面,有沒有辦法解決這個阻塞元素?

我可以嘗試操作,但這在 FireFox 中不起作用,因為它不受支持,任何想法如何創建 function 以“圓形”元素以確保沒有其他元素阻止它?

首先,直接回答你的問題。 使用此 java 腳本單擊

/**
*  Clicks on passed element by injecting js click() in the context of window
*  @param    {ElementFinder}      $element       Locator of element
*  @return   {Promise}
*/
let jsClick = $element => 
        return browser.executeScript(
            'arguments[0].click();', $element.getWebElement()
        );

它的作用 - 當您調用 function 並傳遞一個元素時,它會將 js 代碼注入瀏覽器的控制台。 此代碼定位您的元素並執行單擊。 重要的區別是無論布局或可見性如何,它都會單擊元素,所以不要在測試中過度使用它,因為它不是真正的用戶行為

另外,什么元素阻止了你的按鈕? 我遇到過很多次,第三方集成會彈出一些隨機彈出窗口,而您無法控制這些元素。 我所做的,它總是有效的,我也在通過在瀏覽器中注入一些代碼來刪除該集成。 但是它們的代碼都不同,因此您需要對此進行研究。 示例在這里https://stackoverflow.com/a/59039308/9150146

每當彈出窗口出現時,使用browser.driver.switchTo().alert().dismiss(); 關閉 javascript 彈出窗口,然后繼續自動化。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM