我試圖用Python自動化一些SAP工作監控。我想創建一個腳本,應該做到以下幾點:硒蟒蛇:在javascript運行後找不到元素
連接和登錄SAP環境- >開放SM37交易- >發送作業參數(名用戶 - 從 - 到)- >讀輸出並將其存儲到數據庫中。
我不知道任何模塊或庫允許我這樣做。所以我查了一下WEBGUI已經啓用了。我可以通過瀏覽器打開環境。瀏覽模塊應該允許我做我需要的一切。 嘗試機械和RoboBrowser。它的工作原理,但WEBGUI運行了很多JavaScript的renderize和這些模塊不處理JavaScript。
還有一個鏡頭:硒。 我能夠連接並登錄到環境。但是當試圖從新頁面(主菜單)中選擇一個元素時,Selenium無法找到元素。
打印源代碼我意識到,主菜單網站使用JavaScript呈現。源代碼根本不包含元素,只有標題(「歡迎」)。這意味着登錄是成功的。
我讀了很多帖子要求這個,每個人都推薦使用WebDriverWait
與一些明確的條件。
試過了,沒有工作:
driver.get("http://mysapserver.domain:8000/sap/bc/gui/sap/its/webgui?sap-client=300&sap-language=ES")
wait = WebDriverWait(driver, 30)
element = wait.until(EC.presence_of_element_located((By.ID, 'ToolbarOkCode')))
編輯:
有兩個源代碼:SC-1是一個硒讀取。 SC-2是在JavaScript呈現網站(來自「檢查元素」的網站)時出現的那個。
全SC-1是這樣的: https://pastebin.com/5xURA0Dc
爲元件自身的SC-2是以下內容:
<input id="ToolbarOkCode" ct="I" lsdata="{0:'ToolbarOkCode',1:'Comando',4:200,13:'150px',23:true}" lsevents="{Change:[{ClientAction:'none'},{type:'TOOLBARINPUTFIELD'}],Enter:[{ClientAction:'submit',PrepareScript:'return\x20its.XControlSubmit\x28\x29\x3b',ResponseData:'delta',TransportMethod:'partial'},{Submit:'X',type:'TOOLBARINPUTFIELD'}]}" type="text" maxlength="200" tabindex="0" ti="0" title="Comando" class="urEdf2TxtRadius urEdf2TxtEnbl urEdfVAlign" value="" autocomplete="on" autocorrect="off" name="ToolbarOkCode" style="width:150px;">
仍然無法找到的元素。我該如何解決它? 在此先感謝。
檢查元素是否在框架內 –
源代碼根本不包含元素,也不在iframe中。只有標題(「歡迎」)。這意味着登錄成功了。 –
使用firefox的firefox附加程序進行檢查。檢查特定元素的代碼。 –