Webページにいくつかの行と列を持つHTMLテーブルがあります。私は、各行の列に値を書き込もうとしています。行1の値STR [ウィスコンシンSI 90] LC2 [ウィスコンシンSI 90]を有するSelenium Python send_keysを使用してHTMLテーブルの列に値を書き込もうとしています
行2、行3が有する値STR [ウィスコンシンSI 90] LC3 [ウィスコンシンSI 90]
を有します値STR [wi si 90] PCD [maj mpc]
各行について、値90を98と置き換えたいと考えています。 例行1は今STR [のWi SI 98] LC2 [ウィスコンシン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]")
sendkeysはtextbox、textareaなどの入力タグでのみ動作します。 innerhtml関数でdivのhtmlを変更するにはjavascriptを使用する必要があります。 – Grasshopper
ありがとう、私はそれを行う別の方法を発見しました。 GUIの追加ボタンをクリックすると、HTMLタグに入力タグが表示されます。私はsend_keysを使って入力フィールドに値を入力しました。私の質問の一番下にコードを入れます –