6

Używam modułu Requests do wysyłania żądań GET i POST do stron internetowych, a następnie do przetwarzania ich odpowiedzi. Jeśli Response.text spełnia określone kryteria, chcę, aby został otwarty w przeglądarce. Aby to zrobić, obecnie korzystam z pakietu selenium i ponownie wysyłam żądanie do strony internetowej za pomocą selovera webdrivera. Jednak uważam, że jest to nieefektywne, ponieważ już raz uzyskałem odpowiedź, więc czy istnieje sposób na renderowanie tego uzyskanego obiektu bezpośrednio do przeglądarki otwartej przez selen?Renderowanie odpowiedzi HTTP (treść HTML) w selenowym webdriverze (przeglądarce)

EDIT hacky sposób, że mogę myśleć o to, aby napisać response.text do pliku tymczasowego i otwarcie, że w przeglądarce. Proszę dać mi znać, czy jest lepszy sposób na zrobienie tego niż to?

+0

krótkie odpowiedzi Nie. Długa odpowiedź, istnieją hacky, takie jak to, co próbujesz, ale po co zawracać sobie głowę? Co zyskujesz dzięki temu wysiłkowi? – e4c5

+0

@ e4c5 jak już powiedziałem, chcę otworzyć odpowiedź strony w selenie tylko wtedy, gdy spełnia ona pewien zestaw warunków w odpowiedzi, jeśli po prostu otworzę wszystkie żądania w przeglądarce, które spowodują spowolnienie mojej aplikacji ze względu na niepotrzebne odpowiedzi przeglądarka będzie renderować – bawejakunal

+1

Dlaczego otwierasz w przeglądarce? –

Odpowiedz

5

Aby bezpośrednio czynią niektóre HTML z selenem, można użyć systemu danych z metody GET:

from selenium import webdriver 
import requests 

content = requests.get("http://stackoverflow.com/").content 

driver = webdriver.Chrome() 
driver.get("data:text/html;charset=utf-8," + content) 

Albo można napisać stronę z kawałkiem skryptu:

from selenium import webdriver 
import requests 

content = requests.get("http://stackoverflow.com/").content 

driver = webdriver.Chrome() 
driver.execute_script(""" 
    document.location = 'about:blank'; 
    document.open(); 
    document.write(arguments[0]); 
    document.close(); 
    """, content)