使用Python中的Selenium提交表单

时间:2016-07-22 07:46:38

标签: javascript python forms selenium

我需要从this Site抓取这些超链接背后的一些数据。但是,这些超链接是<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div id="time"></div>,后来使用javascript function calls方法提交form。经过一些搜索,post似乎是一个候选人。所以我的问题是我应该如何正确地为输入标签设置一个值并提交不提交按钮的表单。

selenium

在提交表单之前,我需要为标记from selenium import webdriver url = "http://www.echemportal.org/echemportal/propertysearch/treeselect_input.action?queryID=PROQ3h3n" driver = webdriver.Firefox() driver.get(url) treePath_tag = driver.find_element_by_name("treePath") 指定值。但是,我收到了错误

  

消息:元素当前不可见,因此可能无法进行交互   与

<input>

如果以上是正确的,我想以这种方式提交表格。这是对的吗?

treePath_tag.send_keys('/TR.SE00.00/QU.SE.DATA_ENV/QU.SE.ENV_ENVIRONMENT_DATA/QU.SE.EN_MONITORING')

以下是网页上的来源。

JavaScript函数

selenium.find_element_by_name("add_form").submit()

form&#34; add_form&#34;

<script type="text/javascript">
    function AddBlock(path){
        document.add_form.treePath.value=path;
        document.add_form.submit();
    }
</script>
用havascript调用

div

<form id="addblock_input" name="add_form" action="/echemportal/propertysearch/addblock_input.action" method="post" style="display:none;">
<table class="wwFormTable" style="display:none;"><tr style="display:none;">
  <td colspan="2">
<input type="hidden" name="queryID" value="PROQ3h1w" id="addblock_input_queryID"/>  </td>
</tr>
<tr style="display:none;">
  <td colspan="2">
<input type="hidden" name="treePath" value="" id="addblock_input_treePath"/>  </td>
</tr>
</table></form>

1 个答案:

答案 0 :(得分:3)

您正试图在页面上看不到的hidden输入设置值,这就是发生错误的原因。如果您想在hidden字段设置值,请尝试使用execute_script,如下所示: -

treePath_tag = driver.find_element_by_name("treePath")
driver.execute_script('arguments[0].value = arguments[1]', treePath_tag, '/TR.SE00.00/QU.SE.DATA_ENV/QU.SE.ENV_ENVIRONMENT_DATA/QU.SE.EN_MONITORING')

hidden字段上设置值后,您可以使用以下submit表单: -

selenium.find_element_by_name("add_form").submit()

希望它有所帮助.. :)