【发布时间】:2019-11-01 20:41:47
【问题描述】:
我需要自动化我大学 SAP 门户中的一些超链接背后的一些东西。我想使用Selenium 是去这里的方式。但事实证明,大多数网络元素都是 faked 并从 JavaScript 创建的,这可能是 webdriver 无法SEE它们的原因。
这是我必须点击的:
<a class="urLnkDragRelate" id="Link6c5f851b" ct="LN" st="" tabindex="0" ti="0" title="Feedback Form" onkeydown="return (sapUrMapi_Link_activate('Link6c5f851b',event))" href="javascript:void(0)" target="" onclick="return htmlbDoEvent(this,'C','onclick','0','htmlb_222143_0',6,1,'',0);">
<span class="urFontStd">
<span ct="TV" class="urTxtStd">Feedback Form</span>
</span>
</a>
这里是页面来源:https://pastebin.com/Dpc36nxL
理解截图:https://imgur.com/a/qvxhVFA
我尝试使用解决方法,通过使用ActionChains 打开开发者控制台,并在所需元素上注入人工 CLICK,但即使这样也失败了,因为当我尝试在最后注入 JavaScript 时,此处的链接会更改每一次。
document.querySelector("#Link5908e99d")
类似这样的:
assert "Feedback Form" in driver.page_source
# open up the developer console
driver.send_keys(keys.Keys.CTRL+keys.Keys.SHIFT+'i')
driver.perform()
time.sleep(3)
action.send_keys(keys.Keys.ENTER)
# inject the JavaScript...
action.send_keys("document.querySelector("#Link5908e99d").click()"+keys.Keys.ENTER)
action.perform()
我该如何进行呢?
解决方案是切换到完全被忽视的 iframe,然后使用 iframe 中的相对 XPath 找到元素。
【问题讨论】:
标签: javascript python-3.x selenium selenium-webdriver