我有一个HTML表,网页上有一些行和一列。我试图在每列的列中写入一个值。
第1行的值为STR [wi si 90] LC2 [wi si 90]
行2的值为STR [wi si 90] LC3 [wi si 90]
第3行的值为STR [wi si 90] PCD [maj mpc]
对于每一行,我想用98替换值90 例如。第1行现在应该是STR [wi si 98] LC2 [wi si 98]
我尝试了以下代码,但它没有做任何事情:
def enter_a_street_rule_from_street_rules_listbox(self, street_rule, new_street_rule): # enter the street rule value so all the street rules have the value 98 from page 13 of the regression test script e.g. STR[wi si 98] LC2[wi si 98]
# Params street_rule : E.g. STR[wi si 90] LC2[wi si 90]
# Params new_street_rule : E.g. STR[wi si 98] LC2[wi si 98]
street_rules_listbox_element = self.get_element(By.XPATH, '//table[@id="data_configuration_add_data_object_tab_address_rules_tb_level_rules_street"]//tr//td//div[contains(text(),"%s")]' % street_rule)
street_rules_listbox_element.send_keys(new_street_rule)
调用该方法的代码是:
data_objects_address_rules_tab.enter_a_street_rule_from_street_rules_listbox("STR[wi si 90] LC2[wi si 90]", "STR[wi si 98] LC2[wi si 98]")
HTML片段:
<table id="data_configuration_add_data_object_tab_address_rules_tb_level_rules_street" class="GFNQNVHJE border" cellspacing="0" __gwtcellbasedwidgetimpldispatchingfocus="true" __gwtcellbasedwidgetimpldispatchingblur="true" style="min-width: 350px;">
<thead aria-hidden="false">
<colgroup>
<tbody>
<tr class="GFNQNVHCD" __gwt_subrow="0" __gwt_row="0">
<td class="GFNQNVHBD GFNQNVHDD GFNQNVHED">
<td class="GFNQNVHBD GFNQNVHDD GFNQNVHOD">
<div __gwt_cell="cell-gwt-uid-7176" style="outline-style:none;">STR[wi si 90] LC2[wi si 90]</div>
</td>
</tr>
<tr class="GFNQNVHCE" __gwt_subrow="0" __gwt_row="1">
<tr class="GFNQNVHCD" __gwt_subrow="0" __gwt_row="2">
<td class="GFNQNVHBD GFNQNVHDD GFNQNVHED">
<td class="GFNQNVHBD GFNQNVHDD GFNQNVHOD">
<div __gwt_cell="cell-gwt-uid-7176" style="outline-style:none;">STR[wi si 90] PCD[maj mpc]</div>
</td>
</tr>
</tbody>
<tbody style="display: none;">
<tfoot style="display: none;" aria-hidden="true"/>
</table>
我可以使用以下XPATH来识别元素:
By.XPATH, '//table[@id="data_configuration_add_data_object_tab_address_rules_tb_level_rules_street"]//tr//td//div[contains(text(),"%s")]' % street_rule
如何为每行替换值90和98? 谢谢,Riaz
我现在已经开始工作了。我找到了一种替代方法,即单击GUI上的“添加”按钮。我注意到HTML中出现了一个Input标签。我找到了input元素,然后使用send_keys将值输入到输入字段中。
找到Input标记并输入值的代码是:
def enter_a_street_rule_in_street_rules_listbox(self, new_street_rule):
# Params new_street_rule : E.g. STR[wi si 98] LC2[wi si 98]
street_rules_listbox_element = self.get_element(By.XPATH, '//table[@id="data_configuration_add_data_object_tab_address_rules_tb_level_rules_street"]//tr//td//div//input[@value="Enter rule"]')
street_rules_listbox_element.send_keys(new_street_rule)
找到元素的XPATH是:
'//table[@id="data_configuration_add_data_object_tab_address_rules_tb_level_rules_street"]//tr//td//div//input[@value="Enter rule"]'
调用代码的调用代码:
data_objects_address_rules_tab.click_add_button()
data_objects_address_rules_tab.enter_a_street_rule_in_street_rules_listbox("STR[wi si 98] LC2[wi si 98]")
答案 0 :(得分:1)
.send_keys()
仅适用于接受键盘输入的元素。我不认为这是这种情况。您正在谈论更改页面的HTML。这可以做到,但这只是暂时的。重新加载页面(或页面的该部分)后,更改将丢失。
如果您仍想这样做,可以使用JavascriptExecutor
并将.innerHTML
设置为"STR[wi si 98] LC2[wi si 98]"
或您想要的任何内容。