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

问题:无法找到/单击/发送到特定网页上任何元素的键。

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

我在这里缺少什么?句法?如果有人可以阐明我应该朝哪个方向前进,将不胜感激。

谢谢。


HUX布斯
浏览 75回答 1
1回答

幕布斯6054654

我能够解决这个问题并学到一些东西。我采用的 JS“理论”没有任何意义,因为 driver.execute_script() 没有按照我的想法使用,而是注入代码或查找元素。其次,解决方案实际上是框架 :)我非常专注于在我最初发现的两个框架之间切换,以至于有一刻我认为这两个框架里面可能有更多框架!基本上就是这样,切换到主框架后,我再次切换到主框架内的第二个框架,并且能够通过 xpath 找到。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript