我在 Robot Framework 中编写自动化脚本时遇到了 XPath 问题,导致数据检索失败。下面是一个 HTML 示例:
<div class="content">
<x-html-3348724a>
<x-body-3348724a>
x-body 和 x-html 的序列号是动态的,不是固定的。我想咨询如何使用正则表达式为x-body指定数据。
谢谢你。
尝试了以下方法均失败:
xpath=//div[@class="content"]//*[starts-with(x-body)]
xpath=//div[@class="content"]//x-body(.*)
xpath=//div[@class="mail-content"]//^x-body
下面是您可以使用 Robot Framework 中的 XPath 和正则表达式从 HTML 中的动态元素检索数据的代码示例:
*** Settings ***
Library SeleniumLibrary
*** Variables ***
${URL} Your_URL_here
*** Test Cases ***
Retrieve Dynamic Data Using XPath and Regular Expressions
Open Browser ${URL} chrome
${x_body_element} Get Xpath Count //div[@class="content"]//*[starts-with(local-name(), 'x-body-')]
${x_body_index} Set Variable 1
:FOR ${i} IN RANGE 1 ${x_body_element}+1
\ ${x_body_text} Get Text (//div[@class="content"]//*[starts-with(local-name(), 'x-body-')])[${i}]
\ Run Keyword If '${x_body_text}' != '' Exit For Loop
\ Run Keyword If ${i} == ${x_body_element} Fail No matching element found
\ ${x_body_index} Set Variable ${i}
Log Found x-body element: ${x_body_text}
Close Browser
将
${URL}
替换为您正在使用的实际 URL。该脚本将在指定的类中查找带有以“x-body”开头的标签的动态元素,并使用循环检索其文本内容。如果找到匹配的元素,则循环将退出,并且文本内容将被记录。如果没有找到匹配的元素,脚本将失败。