我在我的水豚環境中遇到以下問題:水豚:按屬性查找含有某物的元素不是
我需要搜索元素。該元素包含一個唯一的屬性。該屬性是異步更改的。 我需要這個屬性的內容,但是當我只搜索屬性時,我得到一個零。
我可以等到屬性具有屬性,但由於這是水豚的工作,我認爲有可能是一個可能的選擇,它可以搜索類似:
find('button[uniqueattribute] != nil')
任何想法如何做到這一點?
已經謝謝了!
我在我的水豚環境中遇到以下問題:水豚:按屬性查找含有某物的元素不是
我需要搜索元素。該元素包含一個唯一的屬性。該屬性是異步更改的。 我需要這個屬性的內容,但是當我只搜索屬性時,我得到一個零。
我可以等到屬性具有屬性,但由於這是水豚的工作,我認爲有可能是一個可能的選擇,它可以搜索類似:
find('button[uniqueattribute] != nil')
任何想法如何做到這一點?
已經謝謝了!
如果屬性被添加到該按鈕元素(沒有原本的屬性),那麼你可以做
find('button[attribute_name]')
將等待(最多Capybara.max_default_wait_time秒的按鈕元素與該屬性是在頁面上 - https://developer.mozilla.org/en-US/docs/Web/CSS/Attribute_selectors等待,然後得到的內容是屬性/值,你可以做
find('button[attribute_name]')['attribute_name']
如果你只是想等到屬性或者不存在或不爲空,那麼你可以做
find('button:not([attribute_name=""])')
如果您需要確保該屬性是存在的,但不爲空這將是
find('button[attribute_name]:not([attribute_name=""])')
我發現了一個可能的解決方案: 可以與XPath查詢元素的長度(這是真棒)與字符串長度。 所以在我的情況的解決方案是:
find(:xpath, ".//button[@unique_attribute_name[string-length() != 0]]")
現在水豚等待,直到該屬性具有價值。如果有更多漂亮的解決方案,請告訴我。
你顯示的XPath不是有效的XPath(屬性名稱在XPath之前是@,所以不能確定它是如何工作的。另外,在Capybara中使用XPath時,你應該始終使用./而不是//- 否則你擊敗所有範圍 - https://github.com/teamcapybara/capybara#beware-the-xpath-trap。所以'.button [string-length(@unique_attribute_name)!= 0]'會一個更好的和合法的XPath –
我沒有複製和粘貼,對我感到羞恥,也沒有向我致謝 我改正了我的回答 感謝提供xpath陷阱的提示! – MJohnyJ
它看起來不錯,但不幸的是,在我的情況下,該屬性已經似乎附加到元素時,它的加載,但空。然後異步地更新一個我不知道的內容,因此我無法搜索除了它以外的內容不應該爲空 – MJohnyJ
@MJohnyJ更新瞭如何通過CSS來完成,如果該屬性已經存在但空白。 –
它的工作很棒,最後一個爲我做了。真酷! – MJohnyJ