2017-09-26 89 views
-1

我想知道是否有一種方法來獲取機器人框架中的任何文本的定位器?我正在使用Selenium2Library的Robot Framework。通過文本查找定位器?

場景示例:假設我在頁面上顯示消息「Hello」,並且在出現新消息時其位置不斷變化。我想單擊此「Hello」字以顯示完整消息。我怎樣才能做到這一點。請幫忙。

+0

爲你的「你好」添加一個ID? – user3012759

+0

這個問題太含糊。我們可以通過數百種方法將頁面添加標籤「Hello」,並通過多種方式訪問​​該標籤。你將不得不更具體。你學習過並試圖使用xpath或css路徑嗎? –

回答

0

我已經看到位置改變了很多與Angular網頁,所以我明白你的意思。每次頁面加載時都可以重新生成ID,並且可能會根據點擊元素的順序進行更改。更糟糕的是,它們也會影響基於dom和xpath的定位器。對你的問題的簡短回答是否定的,它不存在於標準Selenium,Selenium2,ExtendedSelenium2或任何其他標準庫中。

您的問題的中等答案可以在我當前最先進的Click Element by Text自定義關鍵字中解決。它會根據您的輸入生成xpath,如果可以通過簡單的文本搜索找到沒有額外參數的xpath,它就會執行此操作。它有時候很不穩定,可能需要參數注入才能工作,但總的來說,它工作得很好,並且在xpaths遠程可用時很容易使用。

Click Element by Text 
    # EXAMPLE USAGE 
    # Click Element by Text "text on the element" id="midlevellocationoftext"  button 
    # NOTE: Does not account for extra spaces at the beginning or end, text must be exact 
    # NOTE: Allows for injections on purpose to allow user to be more exact with their location 
    [Arguments]  ${text}  ${location}=* ${elementtype}=* 
    Click Element xpath=//*[@${location}]//${elementtype}[text()=${text}] 

長的答案是我正在做更好的事情。這是我迄今所知道的。要做到這一點的要素確實存在於虛空中。 JavaScript可以將網頁變成一個元素列表。我可以在這些元素上調用.innerHTML來獲得他們的文本。我沒有弄清楚細節,但我真的認爲這是可能的,當我弄清楚它的代碼時,代碼將在Code Review上供其他人看到。