我已经检查了多个类似的问题和答案,但不幸的是没有找到针对我的特殊情况的任何解决方案。
问题描述
我正在尝试填写this site并提交表格。表单的构建如下:
<form id="hikuZR" action="/historische-kurse/BMW" method="post">
...
<div class="hidden"><input type="submit" value="senden"></div>
<span class="button bgBlue btn-xs-block pull-sm-right" onclick="submitForm($(this));">Historische Kurse anzeigen</span>
</div>
<input type="hidden" name="pkBHTs" value="1550956687">
</form>
这是我的表演方式:
填写表格
start_day_1 = self.driver.find_element_by_xpath("//select[@name='inTag1']/option[@value=22]")
start_day_1.click()
start_day_2 = self.driver.find_element_by_xpath("//select[@name='inTag2']/option[@value=22]")
start_day_2.click()
start_month_1 = self.driver.find_element_by_xpath("//select[@name='inMonat1']/option[@value=08]")
start_month_1.click()
start_month_2 = self.driver.find_element_by_xpath("//select[@name='inMonat2']/option[@value=08]")
start_month_2.click()
start_year_1 = self.driver.find_element_by_xpath("//select[@name='inJahr1']/option[@value=2018]")
start_year_1.click()
start_year_2 = self.driver.find_element_by_xpath("//select[@name='inJahr2']/option[@value=2018]")
start_year_2.click()
try:
market = self.driver.find_element_by_xpath("//select[@name='strBoerse']/option[@value='%s']" % 'XETRA')
market.click()
sleep(randint(7, 10))
except NoSuchElementException:
print("Element by xpath does not exist!")
单击按钮:
我也在尝试通过XPATH查找按钮:
hist_button = self.driver.find_element_by_xpath("//span[contains(.,'Historische Kurse anzeigen')]")
hist_button.click()
这对我不起作用。我也尝试过按照SO上某些答案中所建议的那样执行脚本来执行按钮。
self.driver.execute_script("arguments[0].click();", hist_button)
在我的情况下,此解决方案也不起作用。该页面已刷新,但未显示历史日期的结果:
您能帮我找出我在做什么错吗?谢谢。
更新25.02.2018
正如评论中建议的那样,我正在使用Select类从DropDown列表中选择值,如下所示:
start_day_1 = Select(self.driver.find_element_by_xpath("//select[@name='inTag1']"))
start_day_1.select_by_value("22")
start_day_2 = Select(self.driver.find_element_by_xpath("//select[@name='inTag2']"))
start_day_2.select_by_value("22")
start_month_1 = Select(self.driver.find_element_by_xpath("//select[@name='inMonat1']"))
start_month_1.select_by_value("8")
start_month_2 = Select(self.driver.find_element_by_xpath("//select[@name='inMonat2']"))
start_month_2.select_by_value("8")
start_year_1 = Select(self.driver.find_element_by_xpath("//select[@name='inJahr1']"))
start_year_1.select_by_value("2018")
start_year_2 = Select(self.driver.find_element_by_xpath("//select[@name='inJahr2']"))
start_year_2.select_by_value("2018")
market = Select(self.driver.find_element_by_xpath("//select[@name='strBoerse']"))
market.select_by_value('XETRA')
并且我看到表单中的选定值(在说明中张贴了“第一个”版本,我也看到了表单中的值)。之后,我再次单击该按钮,没有任何效果。页面已刷新,但看不到结果:
hist_button = self.driver.find_element_by_xpath("//span[contains(.,'Historische Kurse anzeigen')]")
hist_button.click()
html_historical = self.driver.page_source
或
hist_button = self.driver.find_element_by_xpath("//span[contains(.,'Historische Kurse anzeigen')]")
self.driver.execute_script("arguments[0].click();", hist_button)
html_historical = self.driver.page_source
当我手动单击按钮时,所选数据的结果将正确显示。看来按钮的执行不起作用。