python - 如何选择带有硒的切片机?
问题描述
我想知道如何在 Power bi 中使用 selenium 和 Python 选择切片器。
尽管我确实怀疑这并不是真正的 power bi 特定的,更多的是如何将 selenium 与特定的 html 一起使用。
请参阅我的下图作为示例:
因此,我想单击突出显示的下拉菜单,然后选择其中的一个(或多个)选项。
看起来该结构类似于 div 中的 div .... 直到您到达复选框(请参见下面的屏幕截图)。
我是 selenium 的新手,对 html 了解不多,所以我很难弄清楚如何用 selenium 选择一个,如果有人能帮助我如何使用 selenium + python 单击其中一个过滤器,我将不胜感激。
看起来它也是动态的,所以我真的被卡住了。到目前为止,我所做的所有示例都是基本的搜索栏,它们有一个我可以很容易地用来识别我想要什么的 id。
要访问网页,请单击此处:
并单击示例报告,当加载运行代码以生成报告时,您将看到我的第一个屏幕截图。
谢谢!
解决方案
考虑到页面上的所有动态元素,Power BI online 确实不是开始学习自动化的好地方。即使作为一位经验丰富的自动化工程师,这个站点也极其复杂。
在对报表进行任何操作之前,您需要切换到iframe
报表所在的元素。
iframe = driver.find_element_by_xpath("//div[contains(@class, 'reportContainer')]/iframe");
driver.switch_to.frame(iframe)
一旦你这样做了,你就可以开始选择过滤器了。以下是我选择“月份”过滤器的方法:
# expand the 'Month' filter
driver.find_element_by_xpath("//filter[li/div/div/h2[contains(@title, 'Date')]]").click()
这只会扩展过滤器。现在,我们必须从复选框中选择一个项目:
# select "jan-14"
driver.find_element_by_xpath("//div[contains(@aria-label, 'Jan-14')]").click()
给定某些文本参数,您将需要更新您的 XPath 以单击不同的元素。例如,如果您想选择isVanArsdel
而不是Month
,则必须修改 XPath 选择器,如下所示:
# expand the 'isVanArsdel' filter
driver.find_element_by_xpath("//filter[li/div/div/h2[contains(@title, 'isVanArsdel')]]").click()
由于此页面的性质,您的问题很可能不会到此结束。准备好尝试不同的方法来点击元素,例如 Javascript 点击。
如果常规 Selenium.click()
不起作用,可以执行 Javascript 点击:
myElement = driver.find_element_by_xpath("someXPath")
driver.execute_script("arguments[0].click();", myElement)
希望这个对你有帮助。
推荐阅读
- gradle - 运行时无法在 build.gradle 中包含 JSON Schema 验证 json 文件
- swift - These two codes aren't executing in order?
- adobe - 带有加密 PDF 的 Apache Tika
- flutter - SliverAppBar 无法滚动
- python - 如何阻止 matplotlib 显示额外的年份或月份?
- twitter-bootstrap - 如何通过单击并带我到该部分的开头来隐藏切换菜单,而不是在开头下方 20px
- ios - Firebase 不会跳转到方法中
- reactjs - 自动保存时的 Redux-form 加载指示器
- python - 如果用户在另一个文件中输入 0,如何在 pygame 中删除一个框?
- javascript - 由于 adblock,永远获取挂起