我有一張桌子,有四列,行數也在增加。每次測試時,我都需要在最後一行應用測試,我不知道它的XPath,因爲當我第一次編寫測試時它不在那裏。查找按鈕的所有XPath並選擇最後一個?
,我需要會像中的XPath:
//*[@id="example"]/div/table/tbody/tr[X]/td[4]/a[1]
可變X
。
有沒有辦法來取消X
價值,並選擇最大值沒有,或類似的?
我有一張桌子,有四列,行數也在增加。每次測試時,我都需要在最後一行應用測試,我不知道它的XPath,因爲當我第一次編寫測試時它不在那裏。查找按鈕的所有XPath並選擇最後一個?
,我需要會像中的XPath:
//*[@id="example"]/div/table/tbody/tr[X]/td[4]/a[1]
可變X
。
有沒有辦法來取消X
價值,並選擇最大值沒有,或類似的?
您可以使用:
//*[@id="example"]/div/table/tbody/tr[last()]/td[4]/a[1]
這會從最後一個錶行的第四td
元素選擇第一個錨標記,如需要。
'find(:xpath,'// * @ id =「data_main_container」]/div/table/tbody/tr [last()]/td [1]/a [2]')。click',沒有工作,並且用_Capybara :: ElementNotFound_響應。 –
你能告訴我HTML嗎?以上應該工作.... – gtlambert
沒有不幸的是,我不能,但我試圖用真正的號碼,而不是最後一次(),並且工作正常! –
最簡單的解決辦法可能是
all(:xpath, '//*[@id="example"]/div/table/tbody/tr/td[4]/a[1]', minimum: 1).last
或
all('#example div table tr td:nth-of-type(4) a:first-of-type', minimum: 1).last
注:minimum: 1
力量#all
使用水豚等行爲,要等待至少1匹配的元素像#find
一般不會
歡迎來到Stack Overflow。當詢問代碼時,我們需要查看輸入數據的最小示例以及演示問題所需的最小代碼。沒有這些,我們必須花時間來湊齊兩者。這可能會導致錯誤或誤解,這隻會讓我們兩人感到挫敗,並延遲您獲得答案。所以,幫助我們幫助您並提供必要的輸入和代碼。請參閱「[問]」瞭解更多信息。 –
當測試時,這個想法是使用一個衆所周知的小輸入,而不是繼續增長。如果它繼續增長,你的測試時間會增加,最終會超出代碼的運行耐心。另外,不要依賴明確的路徑。在標記中查找已知的路標點(通常是父節點),然後查找實際需要的子項並選擇最後一個。它需要兩個步驟,但不需要生成顯式的XPath或CSS選擇器。 –
謝謝你,下次我會嘗試更加清楚 –