首页 > 解决方案 > Selenium 不会点击最上面的元素

问题描述

考虑以下 Selenium 自动化:
它的目标是从网站 Barchart 转到财务图表,单击自定义日历图标(在图表的右上角),在弹出的表单中输入自定义范围,并使用应用按钮对其进行验证。

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()

在我尝试验证之前,它在大多数情况下都可以正常工作,但这永远不会奏效。然后我意识到有时这最后一个操作会引导我进入一个促销页面,其链接正好位于“应用”按钮的下方。这似乎表明硒“点击”表单进入下面的链接。

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

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

非常感谢任何帮助。

标签: javascriptpythonselenium

解决方案


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

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)

推荐阅读