2015-10-09 150 views
0

我最初有一個鏈接。現在我收到了顯示按鈕的要求,而不是A/B測試的鏈接。由於我不想爲按鈕編寫新的測試,因此我必須使它們的ID相同。如何解決硒中的NoSuchElement異常?

要決定要顯示哪個,我在li項目中添加了兩個獨特的類。這工作正常。

但是在測試中它開始失敗,給出消息「訂戶鏈接不可用」,儘管按鈕存在於那裏。

我認爲它可能會失敗,因爲兩個相同的ID在那裏,所以我添加了兩個相同的類,並將選擇器從ID更改爲類。但它仍然失敗。

<li class="not_subscriber subscriber-text-link " style="display:none"> 
    <a class="link-orange subscribe" href="" id="subscribe_link"> Subscribe </a> 
</li> 
<li class="not_subscriber subscriber-orange-btn " style="display:none"> 
    <a class="btn-orange subscribe" href="" id="subscribe_link" > Subscribe </a> 
</li> 

@FindBy(css = ".subscribe") 
@NoSuchElementDescription("Subscriber link is not available") 
protected WebElement _subscribeLink; 

是否有任何方式,我不必寫新的測試和更改ID和測試將開始傳遞?

+0

分享您的代碼。您的列表項目以display:none開頭。沒有看到你的代碼就說不完。 – santon

+0

一個在所有頁面上運行的文件,基於最佳變量我設置了一個li項目的顯示'塊'。問題是運行代碼時Button是可見的,但它仍然無法找到它。代碼很長。 – ajayv

+0

從您顯示的代碼中,您可以按class = subscribe查找元素。如果你把這個類放在你的按鈕上,它應該可以工作。已經在鏈接和按鈕中添加了 – JeffC

回答

-1

將選擇器更改爲xpath。幾乎每個元素都有一個xpath。並確保將雙引號替換爲單引號。它應該比class或id選擇器更可靠。

+0

XPath不比class或id更可靠。 XPath速度較慢,取決於你如何製作它們,比其他方法更脆弱。 – JeffC

+0

Xpath如何比ID選擇器,任何支持鏈接/文檔更可靠? – xyz

+0

可靠我的意思是你應該能夠在每個元素上找到一個xpath。這只是我自己使用Selenium的經驗,沒有支持文檔。 –

0

能否請您嘗試下面的XPath: -

//li[@class='not_subscriber subscriber-orange-btn ']/a[@class='btn-orange subscribe'] 

希望它會幫助你:)