硒不会点击最上方的元素

时间:2019-11-26 16:01:06

标签: javascript python selenium

请考虑以下Selenium自动化:
它的目标是转到financial chart from the website Barchart,单击自定义日历图标(在图表的右上角),以弹出的形式输入自定义范围,然后使用Apply按钮对其进行验证

driver = webdriver.Chrome()
url = 'https://www.barchart.com/stocks/quotes/AAPL/interactive-chart'
driver.get(url)
driver.find_element_by_css_selector('.calendar-icon').click()
driver.find_element_by_css_selector('option[label="Intraday"]').click()
driver.find_element_by_css_selector('[data-ng-model="selectedAggregation.range.from"]').send_keys('11/01/2019')
driver.find_element_by_css_selector('[data-ng model="selectedAggregation.range.to"]').send_keys('11/01/2019')
driver.find_element_by_css_selector('[data-ng-model="selectedAggregation.range.to"]').send_keys(Keys.ENTER)
driver.find_element_by_css_selector('[data-ng-click="modalConfirm()"]').click()

它在大多数情况下都可以正常工作,直到我尝试验证为止,但从未成功。然后,我意识到某个时候,最后一个动作将引导我进入一个促销页面,其链接位于“应用”按钮的正下方。这似乎表明硒会“点击”表单到下面的链接上。

我尝试了Apply按钮的其他选择器,所有选择器都给出相同的结果。 我也尝试使用硒中的submit()方法,该方法返回错误。最后,我也尝试从selenium实现execute_script方法,但是我无法理解单击应用时执行的javascript调用到底是什么。

注意:这是因为我需要获取该调用生成的cookie和xsrf令牌,而不是因为我需要收集实际的财务数据(我知道可以使用'https://www.barchart.com/proxies/timeseries/queryminutes.ashx?' + data来收集财务数据),其中data是查询字符串参数。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:1)

我在找你,下面应该为你接受更改,我已经检查过了,对我有用。

javascript = 'document.querySelector("body > div.reveal-modal.fade.interactive-chart-modal-aggregation.in > div > div > div > button.bc-button.light-blue").click()'

driver.execute_script(javascript)