2017-10-16 34 views
4

在過去的幾個月裏,我一直在使用Selenium來自動化一個非常枯燥但是工作中非常重要的部分,它涉及上傳表單。硒蟒蛇 - 如何處理隨機彈出?

最近,該網站實施了反饋調查,隨機彈出並將驅動程序切換到新框架。我已經寫了可以處理這個彈出的代碼,並切換回我的默認框架,但問題是隨機性。

有沒有辦法運行我的彈出式處理代碼,儘快引發錯誤框架生成的異常?

我可以將我的整個腳本包含在tryexcept塊中,但是如何指示腳本從停止的位置恢復?

任何意見是非常感謝!

回答

1

我在工作的網站上也遇到過這個問題。我在我們的網站上發現的是,它不是真正的隨機,而是一個計時器。所以基本上它的工作方式是客戶來到網站。如果他們沒有被提示註冊X,那麼他們會得到一個彈出窗口。如果他們註冊或解散了彈出窗口,則會編寫一個cookie來跟蹤他們已經收到該消息。您想要查找該跟蹤cookie並重新創建它以防止彈出窗口。

我所做的是發現的cookie,重新創建它的網站域名(如example.com/some404page一些由頁)的錯誤頁面,然後啓動腳本正常。它完全阻止了彈出窗口的發生。

要了解,如果這是你的情況下,導航到主頁(或任何爲宜),只是等待彈出。這會讓你瞭解計時器的時間長短。關閉彈出窗口並重新加載頁面。如果彈出不再發生,那麼我猜這是同一個機制。

要找到餅乾,清除Cookies在您的瀏覽器,然後重新打開您的網站。 (不要關閉彈出窗口)。我使用Chrome,因此我將介紹如何執行此操作。一般方法應該可以在其他瀏覽器中使用,但具體步驟和命令名稱可能會有所不同。

  1. 開拓devtools(F12)
  2. 導航到應用程序選項卡,找到餅乾(左圖)
  3. 展開餅乾和點擊你正在使用的網站的域名。其他網站可能存在大量Cookie,具體取決於您的網站。
  4. 單擊全部清除按鈕清除所有的cookie。
  5. 關閉彈出窗口並觀察要創建的cookie。希望你會看到一個或只創建幾個cookie。
  6. 注意的cookie的名稱並刪除它們一次一個,並重新加載頁面,等待15秒的(或其他),看看是否彈出發生。

彈出窗口出現後,您知道您刪除的最後一個cookie是您需要重新創建的cookie。您現在可以編寫一個快速函數,通過導航到dummy錯誤頁面example.com/some404page並使用Selenium創建cookie,並創建cookie。在腳本開始時調用該函數。利潤。

+0

這幾乎解決了我的問題!在我手動關閉彈出窗口後,我檢查了瀏覽器Cookie並發現了一個設置爲true的「InvitePresented」Cookie。如果我在腳本的開始處添加此cookie並將其設置爲true,則不再顯示彈出窗口!感謝您的洞察! – WhisperingZebra

0

我遇到過類似的情況。

我向您推薦的是您的前端開發人員或提供反饋調查的公司,並要求他們提供腳本以禁用您運行的瀏覽器會話的彈出窗口。

然後,使用硒庫(如JavascriptExecutor)執行腳本,只要您打開網頁,以便您看不到隨機出現的彈出窗口。