我正在 Python 中使用 selenium,使用我的组织的特定网站来自动跟踪活动的出席情况。与会者列表以网格形式构建,第 1 列包含与会者姓名,第 2 列包含复选框。
我的 Python 代码的想法是在第 1 列中寻找特定名称,然后选中第 2 列中的框。
网格的结构如下:
<div id="grid" style="padding: 1em; display: grid; grid-template-columns: repeat(3, minmax(auto, 20em)); gap: 10px; align-items: center">
<div style="grid-column: 1">
"name1"
</div>
<div style="width: 25px; grid-column: 2">
<div class="cbx-container">
<div class="cbx cbx-md cbx-active" tabindex="1000">
<span class="cbx-icon"></span>
</div>
<input type="text" id="u1b7be9100c2-evforodn5xad-attended" class="check-all-item-1" name="attended-1" value="0" data-krajee-checkboxx="checkboxX_4d99482d" style="display: none;">
</div>
</div>
<div style="grid-column: 1">
"name2"
</div>
<div style="width: 25px; grid-column: 2">
<div class="cbx-container">
<div class="cbx cbx-md cbx-active" tabindex="1000">
<span class="cbx-icon"></span>
</div>
<input type="text" id="u17528d00c2-evforodn5xad-attended" class="check-all-item-1" name="attended-1" value="0" data-krajee-checkboxx="checkboxX_4d99482d" style="display: none;">
</div>
</div> </div>
在上面的示例中,我有 2 行。在第一行中,第 1 列中的“name1”,第 2 列中的复选框。在第二行中,第 1 列中的“name2”,第 2 列中的复选框。真实数据集有更多行。
选择“name2”复选框的 XPATH 语法是什么?
不幸的是,我无法完成此任务,因为我只是从 XPATH 开始。到目前为止,我只能使用以下方式选择名称:
"//div[contains(text(),'name2')]"
您所提议的 XPath 走在正确的轨道上...您只需要多一步,
following::
,例如
//div[contains(text(),'name1')]//following::input
由于您使用的是 python,因此您可以将所需的名称分配给变量,
name
,然后在 XPath 中使用它,例如
name = "name1"
driver.find_element(By.XPATH, f"//div[contains(text(),'{name}')]//following::input")