我正在使用 Robot Framework 处理一个场景,其中我需要修改 HTML 文件中的三个值,然后使用 Chrome 执行它。然而,我正在努力寻找有关如何实现这一目标的信息,特别是因为我熟悉加载 JSON 和 XML 文件,但找不到加载 HTML 文件的方法。
有人有什么建议吗?
这是 HTML 文件的内容:
<html lang="en">
<head>
<meta charset="utf-8">
<title>The Title</title>
<meta name="author" content="SitePoint">
<link rel="stylesheet" href="css/styles.css?v=1.0">
</head>
<body>
<form id="formulaire" method="post" action="Variable1">
<input type="hidden" id="PaReq" name="PaReq" value="Variable2"/>
<input type="hidden" id="TermUrl" name="TermUrl" value="Variable3"/>
<input type="hidden" id="MD" name="MD" value=""/>
</form>
<script>
document.forms[0].submit();
</script>
</body>
</html>
我一直在寻找库或预定义的方法来执行此操作,但什么也没找到, 所以我制作了一个简单的Python脚本,稍后我将在robotframework关键字中使用它, 这是代码
# update_html.py
import os
import sys
from bs4 import BeautifulSoup
def update_html(file_path, new_action, new_pareq_value, new_termurl_value):
file_path = os.path.join(os.path.dirname(__file__), 'templates', 'acs.html')
with open(file_path, 'r', encoding='utf-8') as file:
soup = BeautifulSoup(file, 'html.parser')
form = soup.find('form')
form['action'] = new_action
pareq_input = soup.find('input', {'id': 'PaReq'})
pareq_input['value'] = new_pareq_value
termurl_input = soup.find('input', {'id': 'TermUrl'})
termurl_input['value'] = new_termurl_value
with open(file_path, 'w', encoding='utf-8') as file:
file.write(str(soup))
if __name__ == "__main__":
# Vérifier si le bon nombre d'arguments a été fourni
if len(sys.argv) != 4:
print("Usage: python update_html.py <new_action> <new_pareq_value> <new_termurl_value>")
sys.exit(1)
new_action = sys.argv[1]
new_pareq_value = sys.argv[2]
new_termurl_value = sys.argv[3]
update_html('acs.html', new_action, new_pareq_value, new_termurl_value)
为了执行它,我添加了一个库 Process 然后我用了 运行进程 python3 ${script_path} ${paReq} ${termUrl} ${redirectionUrl}