javascript - 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
查询字符串参数在哪里.
非常感谢任何帮助。
解决方案
我找了你,下面应该为你接受更改,我已经检查过了,它对我有用。
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)
推荐阅读
- python - 如何将 os.system 输出插入文本文件?
- reactjs - 在 Reducer 操作中对数据进行排序
- python - 使用循环堆叠从循环生成的数据帧
- python - 如何将整数列表列表转换为字节列表而不会在python3中耗尽内存?
- python - “cudaGetDevice() 失败”尽管遵循了说明
- c# - 将自定义按钮背景/边框绑定到自定义属性
- angular - Angular 9.0.4,子模块中找不到异步管道(git repo)
- c# - AutoMapper:多对多关系映射
- spring-boot - Spring Boot How to run multiple method with @Scheduled
- python - ValueError:检查输入时出错:预期 simple_rnn_1_input 具有 3 个维度,但得到的数组具有形状 (32、813、701、3)