Selenium自动点击表单中的按钮
Python版本:3.4.1
浏览器:Chrome
我正在尝试用Python的Selenium库点击一个在表单里的按钮。我对Selenium和HTML还不是很熟悉。
这是相关的HTML代码:
<FORM id='QLf_437222' method='POST' action='xxxx'>
<script>document.write("<a href='javascript:void(0);' onclick='document.getElementById(\"QLf_437222\").submit();' title='xxx'>51530119</a>");</script>
<noscript><INPUT type='SUBMIT' value='51530119' title='xxx' name='xxxx'></noscript>
<INPUT type=hidden name="prodType" value="DDA"/>
<INPUT type=hidden name="BlitzToken" value="BlitzToken"/>
<INPUT type=hidden name="productInfo" value="40050951530119"/>
<INPUT type=hidden name="reDirectionURL" value="xxx"/>
</FORM>
我尝试了以下方法:
driver.execute("javascript:void(0)")
driver.find_element_by_xpath('//*[@id="QLf_437104"]/a').click()
driver.find_element_by_xpath('//*[@id="QLf_437104"]/a').submit()
driver.find_element_by_css_selector("#QLf_437104 > a").click()
driver.find_element_by_css_selector("#QLf_437104 > a").submit()
Python没有报错,所以看起来我确实点击了什么,但它并没有按照我想要的那样工作。
另外,当我用Selenium启动Chrome浏览器时,网页的表现有点奇怪。当我在这个启动的Chrome浏览器中点击按钮时,网页会报错(888)。
我不知道接下来该怎么做。是不是和一些隐藏的元素有关?
如果需要我提供更多信息,请告诉我。
编辑:
看起来表单的ID有时候会改变。
1 个回答
1
听起来你想做的就是提交表单,对吧?
你提到的那个<a>
标签其实就是在提交表单。因为这个标签是通过JavaScript插入的,所以在你点击的时候可能看不见它。我建议你可以这样做:
driver.find_element_by_css_selector("form[id^='QLf']").submit()
这样可以避免使用按钮,直接提交正确的表单。
在上面的CSS选择器中,我还用了[id^=
,这意味着要找一个<form>
标签,它的ID属性是以QLf开头的,因为后面的数字看起来是自动生成的。