使用Python和Selenium Webdriver,根据文本值从运行时生成复选框列表中选中一个复选框

时间:2015-12-27 14:07:46

标签: python xpath selenium-webdriver

<tr class="tinside">
<td style="width:80px;">
    <input type="checkbox" onclick="checkCheck(4);" value="1151218123182|N" 
    name="cityno">
    <input type="hidden" value="0" name="dds_id4">
    DELHI 
</td>

我可以使用以下命令driver.find_element_by_xpath("//input[@type='checkbox' and @onclick='checkCheck(5);']").click()

选择复选框

但首先我们必须知道命令中使用的数字值,如5。 数字值在运行时指定像德里 - 4孟买 - 5斋浦尔--6伦敦 - 7巴黎 - 8勒克瑙 - 9

我只知道城市名称,但是值在运行时分配并隐藏...所以输入参数是城市名称。在此先感谢您分享您宝贵的建议..

更新#2

 <html><head> 
<body>
<div id="container"><div class="align_center">
<table class="table_style">
<tbody><tr class="table_header">
<tr class="tinside">
<td style="width:80px;">
<input type="checkbox" onclick="checkCheck(12);" value="1151228060704|N" name="ordno">
<input type="hidden" value="0" name="dds_id12"><input type="hidden" value="CANS" name="status12">DLEH</td>
<td class="center_align">ABC</td>
<input type="hidden" value="9341" id="stk_token12" name="stk_token12"><td class="center_align">XYZ</td>
<input type="hidden" value="NN" id="stk_me12" name="stk_me12"><td class="center_align">11275</td>
<td class="center_align">-</td>
<td class="center_align">0.00</td>
<td class="center_align">-</td>
<td class="center_align">Item1</td>
<td class="center_align">Price</td>
<td class="center_align">Rs. 30.40</td>
<td class="center_align">Dec 27 2015</td>
<td class="center_align">0.00</td>
<td class="center_align">0 </td>
<td class="center_align">NN</td>
</tr>
<tr class="tinside">
<td style="width:80px;">
<input type="checkbox" onclick="checkCheck(12);" value="1151228060704|N" name="ordno">
<input type="hidden" value="0" name="dds_id12"><input type="hidden" value="CANS" name="status12">DELHI</td>
<td class="center_align">ABC</td>
<input type="hidden" value="9341" id="stk_token12" name="stk_token12"><td class="center_align">XYZ</td>
<input type="hidden" value="NN" id="stk_me12" name="stk_me12"><td class="center_align">11275</td>
<td class="center_align">-</td>
<td class="center_align">0.00</td>
<td class="center_align">-</td>
<td class="center_align">Item2</td>
<td class="center_align">Price</td>
<td class="center_align">Rs.35.40</td>
<td class="center_align">Dec 27 2015</td>
<td class="center_align">0.00</td>
<td class="center_align">0</td>
<td class="center_align">NN</td>
</tr>
</tbody></table>
</div></div>
</body>
</html></head> 

我需要在复选框名称及其价格的基础上获得复选框,如给定的示例,需要选择复选框名称DELHI和价格值Rs。 35.40。这两个参数可用于选择正确的复选框。

1 个答案:

答案 0 :(得分:0)

您可以根据td元素的文字内容唯一标识复选框。

因此,为了识别与' DELHI '对应的复选框,我们可以将修改后的xpath写成相同的语句:

driver.find_element_by_xpath("//td[contains(.,'DELHI')]/input[@type='checkbox']").click() 

回答“更新#2”

下的修订问题

如果您想根据价格选择复选框,我们可以使用以下xpath执行此操作:

//td[contains(., 'Rs.35.40')]/parent::tr/td[contains(.,'DELHI')]/input[@type='checkbox']

在这个xpath中,我们首先确定包含期望价格(Rs.35.40)的单元格(td),并基于它 - 我们正在识别其父级(这是'tr')。确定了所需的“tr”后,我们找到了所需的复选框,该复选框位于“td”下,文本内容为“DELHI”。

因此,您修改的代码,选择对应于价格'Rs.35.40'的'DELHI'复选框将如下所示:

driver.find_element_by_xpath("//td[contains(., 'Rs.35.40')]/parent::tr/td[contains(.,'DELHI')]/input[@type='checkbox']").click()