簡體   English   中英

Selenium + Python - 無法與 JavaScript 交互/點擊

[英]Selenium + Python - Not able to interact/click with JavaScript

問題:無法找到/單擊/發送特定網頁上任何元素的鍵。

網絡驅動程序 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">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

我在這里缺少什么? 句法? 如果有人可以闡明我應該朝哪個方向走,我將不勝感激。

謝謝。

我能夠解決這個問題並學習一些東西。 我采用的 JS“理論”沒有任何意義,因為 driver.execute_script() 沒有按照我的想法使用,而是注入代碼或查找元素。

其次,解決方案實際上是框架:)

我非常專注於我最初發現的兩個幀之間的切換,以至於我一刻也沒有想到這兩個幀的 INSIDE 可以有更多的幀!

基本上就是這樣,在切換到主框架后,我再次切換到主框架中的第二個框架,並且能夠通過 xpath 找到。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM