TH3*_*339 2 javascript python forms selenium
我需要从这个站点抓取这些超链接背后的一些数据。但是,这些超链接是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")
Run Code Online (Sandbox Code Playgroud)
在提交表单之前,我需要为 tag 赋值<input>。但是,我遇到了错误
消息:元素当前不可见,因此可能无法与之交互
treePath_tag.send_keys('/TR.SE00.00/QU.SE.DATA_ENV/QU.SE.ENV_ENVIRONMENT_DATA/QU.SE.EN_MONITORING')
Run Code Online (Sandbox Code Playgroud)
如果以上正确,我想以这种方式提交表格。这是正确的吗?
selenium.find_element_by_name("add_form").submit()
Run Code Online (Sandbox Code Playgroud)
以下是网页的来源。
<script type="text/javascript">
function AddBlock(path){
document.add_form.treePath.value=path;
document.add_form.submit();
}
</script>
Run Code Online (Sandbox Code Playgroud)
<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>
Run Code Online (Sandbox Code Playgroud)
<div id="querytree">
<h1>Property Search</h1>
<h2>Select Query Block Type</h2>
<p>Select a section for which to define query criteria.</p>
<div class="queryblocktools"><a href="javascript:document.load_form.submit();"><img style="vertical-align:top;" alt="Load" src="/echemportal/etc/img/load.gif"/> Load Query</a></div>
<ul class="listexpander">
<li>Physical and chemical properties<ul>
<li><a href="javascript:AddBlock('/TR.SE00.00/QU.SE.DATA_PHYS/QU.SE.PC_MELTING');">Melting point/freezing point</a></li>
<li><a href="javascript:AddBlock('/TR.SE00.00/QU.SE.DATA_PHYS/QU.SE.PC_BOILING');">Boiling point</a></li>
</ul>
</div>
Run Code Online (Sandbox Code Playgroud)
您正在尝试设置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')
Run Code Online (Sandbox Code Playgroud)
在hidden字段上设置值后,您可以使用以下submit表单:-
selenium.find_element_by_name("add_form").submit()
Run Code Online (Sandbox Code Playgroud)
希望能帮助到你..:)
| 归档时间: |
|
| 查看次数: |
24788 次 |
| 最近记录: |