为了账号安全,请及时绑定邮箱和手机立即绑定

Selenium + Python - 无法与 JavaScript 交互/点击

Selenium + Python - 无法与 JavaScript 交互/点击

HUX布斯 2023-05-25 15:56:00
问题:无法找到/单击/发送到特定网页上任何元素的键。WebDriver 浏览器我可以与该网页进行交互,直到我单击打开新选项卡的某个链接并且从该页面我无法执行任何操作。在这里进行广泛研究后,我到目前为止所做的尝试是:1- 由于打开了一个新选项卡,我已经“强制”使用driver.switch_to.window查看新选项卡的代码,并确保我已经打印了当前页面标题并且它是正确的。2-我已经尝试了隐式/显式等待(甚至time.sleep)以等待页面加载。3- 研究将我指向 iframe.. 我没有任何 iframe 但我已经搜索了帧数 (2) 并在两者之间切换并尝试使用 xpath(完整 xpath)查找元素但没有找到。4-最大化窗口。所以我尝试了书中的“一切”。检查我需要交互的元素,我发现每个元素都指向带有一些参数的 JS。 href="JavaScript:SWESubmitForm(document.SWEForm2_0,s_10,"s_2_1_96_0","VRId-0")" tabindex="2997" id="s_2_1_96_0">Track Faults进一步查看发现 s_10 是脚本中的一个变量,它具有从 s_0 到 s_14 的不同选项。var s_0 = {action:"/esales_enu/start.swe",target:"_sweview",SWECmd:"GotoView",SWEMethod:"GotoView",SWEView:"L2C Track Channel Reference View BT",SWEApplet:"L2C New CZ Home Page Applet BT",SWEReqRowId:"0",SWESP:"false",SWENeedContext:"true",SWEKeepContext:"0",SWEDIC:"false"}; var s_10 = {action:"/esales_enu/start.swe",target:"_sweview",SWECmd:"GotoView",SWEMethod:"GotoView",SWEView:"New Portal Fault Search View ORH BT",SWEApplet:"L2C New CZ Home Page Applet BT",SWEReqRowId:"0",SWESP:"false",SWENeedContext:"true",SWEKeepContext:"0",SWEDIC:"false"};所以我开始搜索并找到了driver.execute_script()并且我写了:driver.execute_script("SWESubmitForm(document.SWEForm2_0,s_10,'s_2_1_96_0','VRId-0')")但这发生了:selenium.common.exceptions.JavascriptException: Message: javascript error: SWESubmitForm is not defined我在这里缺少什么?句法?如果有人可以阐明我应该朝哪个方向前进,将不胜感激。谢谢。
查看完整描述

1 回答

?
幕布斯6054654

TA贡献1876条经验 获得超7个赞

我能够解决这个问题并学到一些东西。我采用的 JS“理论”没有任何意义,因为 driver.execute_script() 没有按照我的想法使用,而是注入代码或查找元素。

其次,解决方案实际上是框架 :)

我非常专注于在我最初发现的两个框架之间切换,以至于有一刻我认为这两个框架里面可能有更多框架!

基本上就是这样,切换到主框架后,我再次切换到主框架内的第二个框架,并且能够通过 xpath 找到。


查看完整回答
反对 回复 2023-05-25
  • 1 回答
  • 0 关注
  • 136 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信