【问题标题】:Selenium + Python - Not able to interact/click with JavaScriptSelenium + Python - 无法与 JavaScript 交互/点击
【发布时间】:2020-10-18 16:13:37
【问题描述】:

问题:无法找到/单击/send.keys 到特定网页上的任何元素。

WebDriver Chrome

我可以与该网页进行交互,直到我单击某个链接,在该链接中打开了一个新选项卡,并且在该页面上我无法执行任何操作。

经过广泛的研究,到目前为止我所做的尝试:

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">跟踪错误

进一步发现,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主页小程序 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 主页小程序 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:消息:javascript 错误:未定义 SWESubmitForm 

我在这里缺少什么?句法?如果有人能说明我应该往哪个方向走,那将不胜感激。

谢谢。

【问题讨论】:

    标签: javascript python-3.x selenium selenium-webdriver


    【解决方案1】:

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

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

    我非常专注于在最初发现的两个帧之间切换,以至于我一刻都没有想到在这两个帧内部可能会有更多帧!

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-08
      • 2022-08-11
      • 2013-05-19
      相关资源
      最近更新 更多