python-3.x - 如何使用 selenium webdriver 单击此按钮?
问题描述
我正在尝试从纳斯达克抓取数据表:https ://www.nasdaq.com/symbol/msft/interactive-chart?timeframe=5d
我所做的是使用 python 和 selenium webdriver 单击表格按钮(在图表顶部,带有一个小表格徽标)然后刮。
submit = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, '#dataTableBtn')))
submit.click()
但它不起作用。
此处的按钮 html:
<div id="dataTableBtn" class="btn hideSmallIR stx-collapsible" onclick="dataTableLoader()"><span>Data Table</span></div>
欧共体和通过
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
解决方案
图表和相关元素都在一个内,因此<iframe>
您必须:
- 诱导WebDriverWait使所需的帧可用并切换到它。
- 诱导WebDriverWait使所需元素成为可点击的。
您可以使用以下任一定位器策略:
使用
CSS_SELECTOR
:driver.get("https://www.nasdaq.com/symbol/msft/interactive-chart?timeframe=5d") WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR,"iframe[src*='edgar-chartiq']"))) WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "div.hideSmallIR#dataTableBtn>span"))).click()
使用
XPATH
:driver.get("https://www.nasdaq.com/symbol/msft/interactive-chart?timeframe=5d") WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.XPATH,"//iframe[contains(@src, 'edgar-chartiq')]"))) WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//div[@class='btn hideSmallIR stx-collapsible' and @id='dataTableBtn']/span[text()='Data Table']"))).click()
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC
浏览器快照:
推荐阅读
- pine-script - pine 脚本中指示器功能的指示器
- c# - 我可以在构建 .net-core 应用程序后添加本地化资源 (*.resx) 吗?
- angular - Karma ng 测试未在控制台中显示构建错误
- r - 在 R 中运行 LightGBM 时出错“不支持从 'data.frame' 构建”
- vbscript - How to Run a file with a variable name in vbscript
- node.js - 如何在使用 nodejs 链码从超级账本结构 v 1.4 中的链码中获取记录时设置偏移量和限制?
- elasticsearch - 如何在 Kibana 中写入给定的索引模式?
- git - 由于引用分支被删除,无法获取分支
- android - 我只想在设备位于地理围栏区域时启用打卡按钮。我需要做什么?
- python-3.x - 在 pycharm 中安装包时出错,即 pandas 和所有