基于Selenium与Edge的Power BI表格动态元素交互及数据导出问题
Power BI表格数据爬取相关问题解答
问题背景
尝试从Power BI表格中获取数据,表格hover时会显示部分元素:右键点击...元素时,右键菜单没有Inspect Element选项;左键点击该元素会弹出菜单,右键点击菜单任意项才能看到Inspect Element。同时直接用Selenium查找Export Data元素找不到,但手动打开菜单后设置断点就能找到并点击。
问题解答
为何部分元素右键菜单无Inspect Element?能否用Selenium打开
...菜单?- 部分元素的右键菜单被网页JS事件拦截重写,浏览器默认右键菜单被替换成自定义菜单,因此看不到
Inspect Element。 - 可以用Selenium程序化打开
...菜单:直接调用元素的click()方法模拟左键点击即可,Selenium模拟的是真实用户操作,和手动点击效果一致,能触发菜单弹出。
- 部分元素的右键菜单被网页JS事件拦截重写,浏览器默认右键菜单被替换成自定义菜单,因此看不到
动态生成的Export Data元素,是触发生成的JS函数还是必须点击
...?- 两种方式都可行,但直接点击
...元素更简单可靠。Power BI的动态元素生成逻辑通常和点击事件绑定紧密,模拟用户点击能确保所有依赖的JS逻辑(包括元素渲染、权限校验等)都被触发,避免直接调用JS函数可能遗漏的前置条件。
- 两种方式都可行,但直接点击
若要执行JS函数,如何在Edge中找到触发函数并在Selenium中复现?
- 在Edge开发者工具中的操作步骤:
- 手动点击
...弹出菜单,右键菜单选项选Inspect Element,定位到菜单元素。 - 切换到
Event Listeners标签,找到click事件对应的处理函数,点击函数名跳转到源码位置。 - 向上追溯调用链,找到绑定在
...元素上的菜单触发根函数。
- 手动点击
- 在Selenium中复现:使用
execute_script()方法执行找到的JS函数,示例代码:driver.execute_script("window.targetMenuTriggerFunction();") - 注意:Power BI的JS代码多经过混淆压缩,函数名通常是无意义字符串,需要耐心梳理调用逻辑。
- 在Edge开发者工具中的操作步骤:
若上述方法无效,能否用Selenium模拟坐标点击打开菜单?
- 可以。先定位
...元素,获取其坐标后用ActionChains模拟鼠标点击,示例代码:from selenium.webdriver.common.action_chains import ActionChains from selenium.webdriver.common.by import By # 定位...元素 more_btn = driver.find_element(By.CSS_SELECTOR, "your-selector-for-more-btn") # 计算元素中心坐标 x = more_btn.location['x'] + more_btn.size['width'] // 2 y = more_btn.location['y'] + more_btn.size['height'] // 2 # 模拟坐标点击 actions = ActionChains(driver) actions.move_by_offset(x, y).click().perform() # 等待菜单加载 driver.implicitly_wait(2) - 这种方式适合元素难以直接定位的场景,但依赖页面布局稳定,元素位置变化会导致失效。
- 可以。先定位
内容的提问来源于stack exchange,提问作者Mi Po
相关产品推荐
相关产品推荐

