2

我有一個腳本(在<script></script>標籤內),每次加載頁面時都會執行該腳本。在WebDriver中加載頁面之前是否可以刪除WebElement以防止該腳本執行?在WebDriver中加載頁面之前刪除部分HTML - Selenium&Python


我在的思路思考的東西:

以某種方式獲取原料HTML代碼(也許能使源或東西),去除部分(硒或解析器),「注入」編輯的代碼返回到Selenium(Firefox WebDriver或者PhantomJS),最後在該網站上的所有頁面上執行。

有沒有可能做到這一點,或者這可能是不可能的設計?

+0

您是否有權訪問原始HTML? –

+0

我不知道你的意思是什麼。但我可以在網站上看到什麼。我可以通過使用像driver.find_element_by_tag_name()這樣的適當方法將該html保存爲字符串。get_attribute('outerHTML')(如果我沒有記錯,我現在不在我的主計算機上。爲了不運行該腳本,並且不加載該頁面,這是無用的,因爲我無法找到一個元素,因此在沒有加載頁面的情況下獲得原始html數據。 – Clone

+1

Selenium會提出請求,可能您要做的所有事情都是在頁面加載完成後和腳本運行),你可以做什麼(它不會很漂亮,但是......)是爲你正在運行測試的瀏覽器(例如FF或Chrome)創建一個補充來刪除這個腳本URL,然後保存它的配置文件,這個配置文件可以在啓動測試時指出,什麼會阻止腳本運行 – Tom

回答

1

如果您安裝了selenium-requests,您可以對頁面進行GET請求,處理加載的html/etc,然後,然後放置在選項卡中。

插入處理後的結果可能會很棘手,因爲您可能還需要設置當前的瀏覽器URL以匹配(只需插入它將導致跨域加載腳本,相對路徑等問題) - 也許在那裏是覆蓋(或允許壓倒一切的),該硒與預處理的信息

硒要求使得使用一個使用運行的webdriver的Cookie該域和請求庫的請求接收「獲取」響應的一種方式模擬該webdriver發送的默認HTTP標頭。結果是使用webdriver的狀態創建的低級HTTP請求和響應。這是必需的,因爲Selenium接口是非常高級的,並且在打開頁面和瀏覽DOM方面做的事情在Python中並不是真正可行的。

相關問題