我有一個包含多個類 div 元素的頁面 在 Capybara 中,我希望能夠回圈并參考第一行中的第一個文本。
但是,到目前為止,我嘗試過的所有代碼都沒有奏效。這是我嘗試過的:
page.all(:css, 'div').each do |text|
expect(text).to_have 'Goku'[0]
end
我正在嘗試回圈瀏覽頁面并查看是否可以在第一列中找到文本 Goku。
這是我的 HTML 標簽
<div class="uiGridCellOverflow ng-binding ng-scope">Goku</div>
預期輸出:我希望第一行有文本“悟空”。我的期望線應該檢測到第一行有悟空。
實際輸出:暫時錯誤
uj5u.com熱心網友回復:
首先,你沒有 的元素class div,你有 div 型別的元素。在討論這些事情時,術語很重要,因為class在 HTML 中是不同的東西。其次,您提到了第一行和第一列,但只顯示了一個 html 元素,這使得很難準確地確定您正在處理的內容并嘗試實際執行。
當您使用each回圈遍歷 的結果時all,text正在參考單個div元素。因此,如果頁面上的任何內容中沒有字母“G”,expect(text).to_have 'Goku'[0]則會引發例外(不太確定為什么那里有 [0]。div
真的你有
page.all(:css, 'div').each do |div_element|
expect(div_element).to_have('Goku'[0])
end
這永遠不會通過,因為頁面上將有數百個(至少)div不包含該文本(或字母 G)的元素
如果您真正要查找的是作為其他元素的第一個子元素并且完全包含文本 Goku 的元素,那么您可以執行類似的操作
page.all('* > div:first-child', exact_text: 'Goku')
找到他們。如果這不是您想要做的,那么請更新問題以使其更清楚。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/459105.html
下一篇:NoSuchElementException即使使用find_element(By.XPATH,value='xpath_value')
