Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions examples/multi_tabs_navigate.py
Original file line number Diff line number Diff line change
Expand Up @@ -49,10 +49,10 @@ def frame_stopped_loading(self, frameId):


def close_all_tabs(browser):
if len(browser.list_tab()) == 0:
if len(browser.list_tab()) <= 1:
return

for tab in browser.list_tab():
for tab in browser.list_tab()[1:]:
try:
tab.stop()
except pychrome.RuntimeException:
Expand All @@ -61,7 +61,7 @@ def close_all_tabs(browser):
browser.close_tab(tab)

time.sleep(1)
assert len(browser.list_tab()) == 0
assert len(browser.list_tab()) == 1


def main():
Expand All @@ -82,7 +82,7 @@ def main():
tab.start()
tab.Page.stopLoading()
tab.Page.enable()
tab.Network.setRequestInterceptionEnabled(enabled=True)
tab.Network.setRequestInterception(patterns=[{ 'urlPattern': '*' }])
tab.Page.navigate(url="http://httpbin.org/post")

for tab in tabs:
Expand Down
4 changes: 2 additions & 2 deletions examples/multi_tabs_pdf.py
Original file line number Diff line number Diff line change
Expand Up @@ -46,10 +46,10 @@ def frame_stopped_loading(self, frameId):


def close_all_tabs(browser):
if len(browser.list_tab()) == 0:
if len(browser.list_tab()) <= 1:
return

for tab in browser.list_tab():
for tab in browser.list_tab()[1:]:
try:
tab.stop()
except pychrome.RuntimeException:
Expand Down
6 changes: 3 additions & 3 deletions examples/multi_tabs_screenshot.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,10 +44,10 @@ def frame_stopped_loading(self, frameId):


def close_all_tabs(browser):
if len(browser.list_tab()) == 0:
if len(browser.list_tab()) <= 1:
return

for tab in browser.list_tab():
for tab in browser.list_tab()[1:]:
try:
tab.stop()
except pychrome.RuntimeException:
Expand All @@ -56,7 +56,7 @@ def close_all_tabs(browser):
browser.close_tab(tab)

time.sleep(1)
assert len(browser.list_tab()) == 0
assert len(browser.list_tab()) == 1


def main():
Expand Down
11 changes: 5 additions & 6 deletions examples/post_request.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,18 +15,17 @@ def do_post(self):

event_handler = EventHandler()

event_handler.set_tab(self.tab)
event_handler.set_token('asdkflj497564dsklf')
event_handler.set_post_data({
'param1': 'value1',
'param2': 'value2'
})

url_pattern_object = {'urlPattern': '*fate0*'}
self.tab.Network.setRequestInterception(patterns=[url_pattern_object])

self.tab.Network.requestIntercepted = event_handler.on_request_intercepted

self.tab.start()
self.tab.Network.requestIntercepted = event_handler.on_request_intercepted
self.tab.Network.setRequestInterception(patterns=[url_pattern_object])

self.tab.Network.enable()
self.tab.Page.enable()
Expand All @@ -43,7 +42,7 @@ class EventHandler(object):
def __init__(self):
self.tab = None
self.token = None
self.is_first_request = False
self.is_first_request = True
self.post_data = {}

def set_tab(self, t):
Expand Down Expand Up @@ -75,7 +74,7 @@ def on_request_intercepted(self, **kwargs):
'url': request['url'],
'method': 'POST',
'headers': request['headers'],
'postData': urllib.urlencode(self.post_data)
'postData': urllib.parse.urlencode(self.post_data)
})

self.tab.Network.continueInterceptedRequest(**new_args)
Expand Down
5 changes: 5 additions & 0 deletions pychrome/tab.py
Original file line number Diff line number Diff line change
Expand Up @@ -119,9 +119,14 @@ def _recv_loop(self):
try:
self._ws.settimeout(1)
message_json = self._ws.recv()
if message_json == '':
continue
message = json.loads(message_json)
except websocket.WebSocketTimeoutException:
continue
except json.decoder.JSONDecodeError: # '' and another
logger.error("invalid json", exc_info=True)
return
except (websocket.WebSocketException, OSError):
if not self._stopped.is_set():
logger.error("websocket exception", exc_info=True)
Expand Down
20 changes: 11 additions & 9 deletions tests/test_browser.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,14 @@


def close_all_tabs(browser):
if len(browser.list_tab()) == 0:
if len(browser.list_tab()) <= 1:
return

for tab in browser.list_tab():
for tab in browser.list_tab()[1:]:
browser.close_tab(tab)

time.sleep(1)
assert len(browser.list_tab()) == 0
assert len(browser.list_tab()) == 1


def setup_function(function):
Expand All @@ -38,14 +38,14 @@ def test_chome_version():
def test_browser_list():
browser = pychrome.Browser()
tabs = browser.list_tab()
assert len(tabs) == 0
assert len(tabs) == 1


def test_browser_new():
browser = pychrome.Browser()
browser.new_tab()
tabs = browser.list_tab()
assert len(tabs) == 1
assert len(tabs) == 1 + 1


def test_browser_activate_tab():
Expand All @@ -62,10 +62,12 @@ def test_browser_tabs_map():
browser = pychrome.Browser()

tab = browser.new_tab()
time.sleep(0.5)
assert tab in browser.list_tab()
assert tab in browser.list_tab()

browser.close_tab(tab)
time.sleep(0.5)
assert tab not in browser.list_tab()


Expand All @@ -76,13 +78,13 @@ def test_browser_new_10_tabs():
tabs.append(browser.new_tab())

time.sleep(1)
assert len(browser.list_tab()) == 10
assert len(browser.list_tab()) == 10 + 1

for tab in tabs:
browser.close_tab(tab.id)

time.sleep(1)
assert len(browser.list_tab()) == 0
assert len(browser.list_tab()) == 1


def test_browser_new_100_tabs():
Expand All @@ -92,10 +94,10 @@ def test_browser_new_100_tabs():
tabs.append(browser.new_tab())

time.sleep(1)
assert len(browser.list_tab()) == 100
assert len(browser.list_tab()) == 100 + 1

for tab in tabs:
browser.close_tab(tab)

time.sleep(1)
assert len(browser.list_tab()) == 0
assert len(browser.list_tab()) == 1
10 changes: 5 additions & 5 deletions tests/test_multi_tabs.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,15 +11,15 @@


def close_all_tabs(browser):
if len(browser.list_tab()) == 0:
if len(browser.list_tab()) <= 1:
return

logging.debug("[*] recycle")
for tab in browser.list_tab():
for tab in browser.list_tab()[1:]:
browser.close_tab(tab)

time.sleep(1)
assert len(browser.list_tab()) == 0
assert len(browser.list_tab()) == 1


def setup_function(function):
Expand All @@ -46,15 +46,15 @@ def test_normal_callmethod():

for tab in tabs:
tab.start()
result = tab.Page.navigate(url="http://www.fatezero.org")
result = tab.Page.navigate(url="https://github.com/fate0")
assert result['frameId']

time.sleep(3)

for tab in tabs:
result = tab.Runtime.evaluate(expression="document.domain")
assert result['result']['type'] == 'string'
assert result['result']['value'] == 'www.fatezero.org'
assert result['result']['value'] == 'github.com'
tab.stop()


Expand Down
24 changes: 12 additions & 12 deletions tests/test_single_tab.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,15 @@


def close_all_tabs(browser):
if len(browser.list_tab()) == 0:
if len(browser.list_tab()) <= 1:
return

logging.debug("[*] recycle")
for tab in browser.list_tab():
for tab in browser.list_tab()[1:]:
browser.close_tab(tab)

time.sleep(1)
assert len(browser.list_tab()) == 0
assert len(browser.list_tab()) == 1


def setup_function(function):
Expand All @@ -34,14 +34,14 @@ def test_normal_callmethod():
tab = browser.new_tab()

tab.start()
result = tab.Page.navigate(url="http://www.fatezero.org")
result = tab.Page.navigate(url="https://github.com/fate0")
assert result['frameId']

time.sleep(1)
result = tab.Runtime.evaluate(expression="document.domain")

assert result['result']['type'] == 'string'
assert result['result']['value'] == 'www.fatezero.org'
assert result['result']['value'] == 'github.com'
tab.stop()


Expand Down Expand Up @@ -70,19 +70,19 @@ def test_invalid_params():
pass

try:
tab.Page.navigate("http://www.fatezero.org")
tab.Page.navigate("https://github.com/fate0")
assert False, "never get here"
except pychrome.CallMethodException:
pass

try:
tab.Page.navigate(invalid_params="http://www.fatezero.org")
tab.Page.navigate(invalid_params="https://github.com/fate0")
assert False, "never get here"
except pychrome.CallMethodException:
pass

try:
tab.Page.navigate(url="http://www.fatezero.org", invalid_params=123)
tab.Page.navigate(url="https://github.com/fate0", invalid_params=123)
except pychrome.CallMethodException:
assert False, "never get here"

Expand Down Expand Up @@ -169,7 +169,7 @@ def request_will_be_sent(**kwargs):
assert False, "never get here"

try:
tab.Page.navigate(url="http://www.fatezero.org")
tab.Page.navigate(url="https://github.com/fate0")
assert False, "never get here"
except pychrome.RuntimeException:
pass
Expand All @@ -189,7 +189,7 @@ def request_will_be_sent(**kwargs):
tab.Network.requestWillBeSent = request_will_be_sent
tab.Network.enable()
tab.Page.navigate(url="chrome://newtab/")
tab.Page.navigate(url="http://www.fatezero.org")
tab.Page.navigate(url="https://github.com/fate0")

if tab.wait(timeout=5):
assert False, "never get here"
Expand Down Expand Up @@ -282,12 +282,12 @@ def test_call_method_timeout():
tab.Page.navigate(url="chrome://newtab/", _timeout=5)

try:
tab.Page.navigate(url="http://www.fatezero.org", _timeout=0.8)
tab.Page.navigate(url="https://github.com/fate0", _timeout=0.8)
except pychrome.TimeoutException:
pass

try:
tab.Page.navigate(url="http://www.fatezero.org", _timeout=0.005)
tab.Page.navigate(url="https://github.com/fate0", _timeout=0.005)
except pychrome.TimeoutException:
pass

Expand Down