差異處

這裏顯示兩個版本的差異處。

連向這個比對檢視

Both sides previous revision 前次修改
下次修改
前次修改
rf:rf:howtoassertmultipletextnode [2016/07/08 16:29]
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|}}\\
 \\ \\
行 13: 行 13:
 以我的測試網頁為例子,要能搜尋到text包含g2的字串,可用以下兩個xpath:​\\ 以我的測試網頁為例子,要能搜尋到text包含g2的字串,可用以下兩個xpath:​\\
 \\ \\
-1. 透過index指定位置:​+透過index指定位置:​
 <​code>​ <​code>​
 //​pre[contains(text()[2],'​g2'​)] //​pre[contains(text()[2],'​g2'​)]
 </​code>​ </​code>​
-2. 先列出所有text()項目再給予條件:​+先列出所有text()項目再給予條件:​
 <​code>​ <​code>​
 //​pre[text()[contains(.,'​g2'​)]] //​pre[text()[contains(.,'​g2'​)]]
行 23: 行 23:
 但在動態生成的網頁中,很難直接指定index去做assertion。綜合這兩個做法,並試驗一些可能可用的keyword,如下:​\\ 但在動態生成的網頁中,很難直接指定index去做assertion。綜合這兩個做法,並試驗一些可能可用的keyword,如下:​\\
 {{:​rf:​rf:​rf_test_multiple_text_codes_testcase.png|}}\\ {{:​rf:​rf:​rf_test_multiple_text_codes_testcase.png|}}\\
-除了第二個會錯之外,其餘的都能正常找到指定項目。+除了第二個是我們原先問題會錯之外,其餘的都能正常找到指定項目。所以目前有兩個解法:​ 
 +  - text()優先的xpath:​ 參考上圖4。 
 +  - 使用Wait Until Element Contain與Element Should Contain: 通常適用於node有好辨別的特徵,如id,參考上圖5與6。 
 + 
 + 
 ===== 測試網頁 ===== ===== 測試網頁 =====
 <code html> <code html>