使用selenium处理隐藏元素时遇到问题

时间:2017-05-23 19:08:19

标签: python-3.x selenium selenium-webdriver web-scraping

每次运行此代码时,都会遇到问题,无法访问目标网页。该网站需要填写帖子请求参数才能到达我所在的页面。然而,使用get请求它是好的,直到它击中" Var4"我的代码中的参数。检查元素我可以看到它表示隐藏。如果我将隐藏参数留空,则将其重定向到另一个位置。所以,满足这个东西去到目标页面超出了我的能力。任何建议将不胜感激。

from selenium import webdriver

driver = webdriver.Chrome(r"C:\Users\ar\Desktop\Chromedriver\chromedriver.exe")
driver.get('https://www.infocomm.org/cps/rde/xchg/infocomm/hs.xsl/memberdirectory.htm')

Var1='Professional Services Providers'
Var2='AUSTRALIA'
Var3='0'
Var4='1'

driver.find_element_by_xpath('//select[@name="mas_type"]').send_keys(Var1)
driver.find_element_by_xpath('//select[@name="mas_cntr"]').send_keys(Var2)
driver.find_element_by_xpath('//input[@name="OtherCriteria"]').send_keys(Var3)
driver.find_element_by_xpath('//input[@name="DoMemberSearch"]').send_keys(Var4)
driver.find_element_by_xpath('//input[@type="submit"]').click()

隐藏内容的元素,应该适用于" Var4":

    <form name="searchform" id="searchform" action="memberdirectory.htm" method="post" onsubmit="return Checkform();">
<input type="hidden" id="DoMemberSearch" name="DoMemberSearch" value="1">
<div class="login block-type-a block">

2 个答案:

答案 0 :(得分:2)

作为解决方法,您可以尝试使用selenium执行javascript。

例如,取消隐藏元素

driver.execute_script("document.getElementById('DoMemberSearch').value = '%s';" % Var4)

或直接设定值

mocha

答案 1 :(得分:0)

你无法将密钥发送到隐藏元素,你可以做的是使用javascript发送值

可能是这样的

driver.execute_script("document.getElementById('DoMemberSearch').value='1')