Selenium自动点击表单中的按钮

2 投票
1 回答
2117 浏览
提问于 2025-04-18 15:39

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开头的,因为后面的数字看起来是自动生成的。

撰写回答