使用 selenium(带有 python 绑定(bind)),我正在处理一个几乎完全是 AJAX 的网页;包括超链接。我希望不使用 element.click() 方法,而是在标签的“onclick”属性中执行 JavaScript:
标签:
<a onclick="javascript:setEvent(event);requisition_openRequisitionDescription('requisitionListInterface','actOpenRequisitionDescription',_ftl_api.lstVal('requisitionListInterface', 'requisitionListInterface.listRequisition', 'requisitionListInterface.d327682e687', this),'requisitionList');return ftlUtil_followLink(this);" href="#" title="View this job description" id="requisitionListInterface.reqTitleLinkAction.row1">
代码:
from selenium import webdriver
firefox = webdriver.Firefox()
firefox.get("some_url")
elem = firefox.find_element_by_id("requisitionListInterface.reqTitleLinkAction.row1")
jcode = elem.get_attribute("onclick")
firefox.execute_script(jcode)
错误:
WebDriverException: Message: u'event is not defined' ; Stacktrace:
免责声明:
我不懂 JavaScript。据我所知,它期待“事件”变量,但我猜它与回调有关?
编辑:
我假设 javascript 正在修改 href 属性,但是 javascript 是否可以在不修改超链接的情况下重定向浏览器?
最佳答案
您只需使用此按钮即可单击它。
elem.click()
onclick 事件会自动触发。
关于javascript - 无法使用selenium在onclick中执行javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17850944/