差異處
這裏顯示兩個版本的差異處。
Both sides previous revision 前次修改 下次修改 | 前次修改 | ||
rf:rf:howtoassertmultipletextnode [2016/07/08 16:24] tony [How to?] |
rf:rf:howtoassertmultipletextnode [2023/06/25 09:48] (目前版本) |
||
---|---|---|---|
行 5: | 行 5: | ||
{{:rf:rf:rf_pre_node_with_mutiple_text.png|}}\\ | {{:rf:rf:rf_pre_node_with_mutiple_text.png|}}\\ | ||
\\ | \\ | ||
- | 一個pre code底下包含了三個text node,當在Selenium IDE與Chrome Developer Tools中使用以下xpath,是無法找到任何批配的節點:\\ | + | 一個pre code底下包含了三個text node,當在Selenium IDE與Chrome Developer Tools中使用以下xpath,由於是找到第一個,所以無法找到任何批配的節點:\\ |
{{:rf:rf:rf_pre_node_with_mutiple_text_seleniumide.png|}}\\ | {{:rf:rf:rf_pre_node_with_mutiple_text_seleniumide.png|}}\\ | ||
\\ | \\ | ||
- | 本篇文章主要告訴你,如果某個節點資料是動態插入的,該如何透過selenium去做assert。 | + | 本篇文章主要告訴你,如果某個節點資料是動態插入的,該如何透過selenium去做assertion。 |
===== How to? ===== | ===== How to? ===== | ||
- | 以我的測試網頁為例子,要能搜尋到text包含g2的字串,可用以下兩個xpath: | + | 以我的測試網頁為例子,要能搜尋到text包含g2的字串,可用以下兩個xpath:\\ |
- | - //pre[contains(text()[2],'g2')] | + | \\ |
- | - //pre[text()[contains(.,'g2')]] | + | 透過index指定位置: |
- | 但在動態生成的網頁中,很難直接指定index去做assertion。 | + | <code> |
+ | //pre[contains(text()[2],'g2')] | ||
+ | </code> | ||
+ | 先列出所有text()項目再給予條件: | ||
+ | <code> | ||
+ | //pre[text()[contains(.,'g2')]] | ||
+ | </code> | ||
+ | 但在動態生成的網頁中,很難直接指定index去做assertion。綜合這兩個做法,並試驗一些可能可用的keyword,如下:\\ | ||
+ | {{:rf:rf:rf_test_multiple_text_codes_testcase.png|}}\\ | ||
+ | 除了第二個是我們原先問題會錯之外,其餘的都能正常找到指定項目。所以目前有兩個解法: | ||
+ | - text()優先的xpath: 參考上圖4。 | ||
+ | - 使用Wait Until Element Contain與Element Should Contain: 通常適用於node有好辨別的特徵,如id,參考上圖5與6。 | ||
+ | |||
- | {{:rf:rf:rf_test_multiple_text_codes_testcase.png|}} | ||
===== 測試網頁 ===== | ===== 測試網頁 ===== | ||
<code html> | <code html> |