我正在尝试计算表格中可以在10,20或50行表格中显示的所有行的数量。我在数据库中有71条记录,因此在页面上,当我每页选择10行时,有8个表链接。下面的代码工作正常,并返回行的总和,直到第6页,它显示聚合值为60,但在下一次迭代中,它无法计算第7页的10条记录,只返回1,所以我总共得到61而不是71.似乎忽略了这一过程中的一页。
在下面的Hemanthvrm评论之后,我查看了html并发现此问题是由于页面导航表上的范围问题引起的。此页面导航表有10个框
<Prev>|1|2|3|4|5|...|8|<Next>
xpaths的范围从// [@ id =“study_paginate”] / ul / li [2] / a到// [@ id =“study_paginate”] / ul / li [8] / A
但是当单击页面5时,导航表将变为
<Prev>|1|...|4|5|6|7|8|<Next>
但是相对位置的xpaths保持不变,所以之前// [@ id =“study_paginate”] / ul / li [6] / a参考第5页,点击第5页后,相同// [@ id =“study_paginate”] / ul / li [6] / a现在引用第6页。由于系统已经点击了这个xpath(第5页),所以在五点之后点击// * [ @ id =“study_paginate”] / ul / li [7] / a,现在引用第7页。所以第6页完全省略了。
SAS_Temp_Tests
[Tags] TEMP
Open Browser http://localhost:5000/login/ Chrome
Maximize Browser Window
Wait Until Element Is Visible id=submit
Input Text id=email ${User_Email}
Input Password password ${User_PW}
Click Element id=submit
sleep 2s
Click Element ${User_Menu Link}
Wait Until Element Is Visible ${User_menu_Study_admin_Panel Link}
Click Element ${User_menu_Study_admin_Panel Link}
sleep 3s
Comment Click Element xpath=//*[@id="study_length"]/label/select/option[4]
${rows}= Get Matching Xpath Count //*[@id="study"]/tbody/tr
Log ${rows}
${Row_num}= Evaluate 0
Set Global Variable ${Row_num}
Log ${Row_num}
: FOR ${x} IN RANGE 2 9999999
\ ${page}= Run Keyword And Return Status Element Should Be Visible xpath=//*[@id="study_paginate"]/ul/li[${x}]/a
${y} Evaluate ${x}+1
\ ${No_Page} Run Keyword And Return Status Element Should Not Be Visible xpath=//*[@id="study_paginate"]/ul/li[${y}]/a
\ Exit For Loop If ${No_Page}
\ Click Element xpath=//*[@id="study_paginate"]/ul/li[${x}]/a
\ Wait Until Element Is Visible xpath=//*[@id="study"]
\ sleep 1s
\ ${rows}= Get Matching Xpath Count //*[@id="study"]/tbody/tr
\ ${Row_num} Evaluate ${Row_num}+${rows}
\ Log ${Row_num}
Close All Browsers
有了这个更新,任何建议我如何克服这个问题?
答案 0 :(得分:-1)
一切看起来都不错
*你测试过$ {x}只有7吗?如果是,那你有1还是10?
*你有没有比较7和6的表格格式?