[英]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.