0

我有一個奇怪的問題,週一傳遞的測試現在失敗。我不斷收到涉及不位於該元件相同的錯誤:wdio點擊一個元素,然後拋出異常說元素無法找到

Error: An element could not be located on the page using the given search parameters. 
at element(".component-search__cta") - click.js:12:17 
at click(".component-search__cta") - errorHandler.js:112:39 

的事情是,絕對位於在我的頁面對象的代碼點擊的元素。然後瀏覽器重定向到新頁面(如預期的那樣),但是測試會拋出這個虛假錯誤。

代碼不能簡單得多:

const Page = require('../../common/page_objects/page'); 
const expect = require('chai').expect; 

class HomePage extends Page { 

    static get elements() { 
    return { 
    searchBox: browser.element('.component-search__text'), 
    searchButton: browser.element('.component-search__cta') 
    }; 
} 

    static search(query){ 
    this.elements.searchBox.waitForVisible(); 
    this.elements.searchBox.setValue(query); 
    this.elements.searchButton.click(); 
    } 
} 

    this.When(/^I submit a search query "([^"]*)"$/, function(query) { 
    HomePage.search(query); 
    }); 

如果我註釋掉searchButton.click();我沒有得到錯誤了,但因爲不再被點擊搜索按鈕,測試將失敗!

+0

如果放棄顯而易見的原因(無元素,需要等待元素):可能是頁面中的多元素('。component-search__cta')? –

+0

該定位器僅返回Chrome控制檯中的一個元素。雖然更好的定位器是'button.component-search__cta';改變它並沒有解決我的問題。我也嘗試了waitForVisible方法,但關於這個問題的奇怪的事情是我可以看到每次點擊按鈕。 – clickcell

回答

0

使用'xpath'或css選擇框將找不到元素或組件如果選擇器不夠具體。 因此,嘗試一個更具體的CSS選擇像

跨度[「類=‘按鈕’」]或// DIV /標籤/ DIV

我希望這會幫助你解決問題。