【发布时间】:2021-06-30 07:45:35
【问题描述】:
我正在尝试使用 Python Selenium 在页面上找到某个 javascript 按钮并单击它。之前,您单击离开或链接到另一个页面,论坛上的其他解决方案不适用于我的情况。首先,我将展示一个充满按钮的页面图像。 我正在尝试点击名为“Schoology”的按钮。
接下来,我将继续显示我尝试单击的某个按钮的外部 HTML 代码 -
<application _ngcontent-bxy-c60 tabindex="0" role="link" class="cl-app app-margin ng-star-inserted" _nghost-bxy-c57 aria-label="Schoology">
如果更容易阅读,这里是一个屏幕截图。
我想点击的 Schoology 按钮是 JavaScript。在使用EC.presence_of_all_elements_located 的Web Driver Wait 功能以确保我在正确的页面上之后,我继续尝试单击按钮。我尝试了一些方法,但都失败了
1.使用 XPATH 查找元素
driver.execute_script("document.getElementsByXpath('/html/body/app-root/secure/div/app-apps-container/application[8]').click()").
这导致了document.getElementByXpath is not a function 错误。
2。使用类名查找元素
driver.execute_script("document.getElementsByClassName('cl-app app-margin ng-star-inserted')[0].click()")
这里的问题是每个 JavaScript 按钮都有完全相同的类。当我使用这行代码时,脚本执行并单击了第一个按钮(AP Human Geography)而不是我想要的 Schoology 按钮。
有没有办法使用 Aria-Label 做到这一点?
我注意到 Aria-Label 确实可以区分和识别每个 JavaScript 按钮。就我而言,它说"aria-label = "Schoology"。但是,我不确定这将如何实施。我如何使用诸如 Aria-Label 之类的东西来确保脚本单击正确的 JavaScript 按钮。请记住,我需要这样做,以使脚本不会选择错误的按钮(即单击第一个按钮,因为它们都具有相同的类名)
【问题讨论】:
标签: javascript python html selenium automation