class TestRemote(object): def setup_method(self, method): from browsermobproxy.client import Client self.client = Client("localhost:9090") chrome_binary = environ.get("CHROME_BIN", None) self.desired_caps = selenium.webdriver.common.desired_capabilities.DesiredCapabilities.CHROME if chrome_binary is not None: self.desired_caps.update({ "chromeOptions": { "binary": chrome_binary, "args": ['no-sandbox'] } }) self.driver = webdriver.Remote(desired_capabilities=self.desired_caps, proxy=self.client) def teardown_method(self, method): self.client.close() self.driver.quit() @pytest.mark.human def test_set_clear_url_rewrite_rule(self): targetURL = "https://www.saucelabs.com/versions.js" assert 200 == self.client.rewrite_url( "https://www.saucelabs.com/versions.+", "https://www.saucelabs.com/versions.json") self.driver.get(targetURL) assert "Sauce Connect" in self.driver.page_source assert self.client.clear_all_rewrite_url_rules() == 200 self.driver.get(targetURL) assert "Sauce Connect" not in self.driver.page_source @pytest.mark.human def test_response_interceptor(self): content = "Response successfully intercepted" targetURL = "https://saucelabs.com/versions.json?hello" self.client.response_interceptor( """if(messageInfo.getOriginalUrl().contains('?hello')){contents.setTextContents("%s");}""" % content) self.driver.get(targetURL) assert content in self.driver.page_source
class TestWebDriver(object): def setup_method(self, method): from browsermobproxy.client import Client self.client = Client("localhost:9090") self.driver = None def teardown_method(self, method): self.client.close() if self.driver is not None: self.driver.quit() @pytest.mark.human def test_i_want_my_by_capability(self): capabilities = selenium.webdriver.common.desired_capabilities.DesiredCapabilities.CHROME self.client.add_to_capabilities(capabilities) # sets self.driver for proper clean up self._create_webdriver(capabilites=capabilities) self._run_url_rewrite_test() @pytest.mark.human def test_i_want_my_by_proxy_object(self): self._create_webdriver(capabilites=selenium.webdriver.common.desired_capabilities.DesiredCapabilities.CHROME, proxy=self.client) self._run_url_rewrite_test() def test_what_things_look_like(self): bmp_capabilities = copy.deepcopy(selenium.webdriver.common.desired_capabilities.DesiredCapabilities.FIREFOX) self.client.add_to_capabilities(bmp_capabilities) proxy_capabilities = copy.deepcopy(selenium.webdriver.common.desired_capabilities.DesiredCapabilities.FIREFOX) proxy_addr = 'localhost:%d' % self.client.port proxy = Proxy({'httpProxy': proxy_addr,'sslProxy': proxy_addr}) proxy.add_to_capabilities(proxy_capabilities) assert bmp_capabilities == proxy_capabilities def _create_webdriver(self, capabilites, proxy=None): chrome_binary = environ.get("CHROME_BIN", None) if chrome_binary is not None: capabilites.update({ "chromeOptions": { "binary": chrome_binary, "args": ['no-sandbox'] } }) if proxy is None: self.driver = webdriver.Remote(desired_capabilities=capabilites) else: self.driver = webdriver.Remote(desired_capabilities=capabilites, proxy=proxy) def _run_url_rewrite_test(self): targetURL = "https://www.saucelabs.com/versions.js" assert 200 == self.client.rewrite_url( "https://www.saucelabs.com/versions.+", "https://www.saucelabs.com/versions.json" ) self.driver.get(targetURL) assert "Sauce Connect" in self.driver.page_source assert self.client.clear_all_rewrite_url_rules() == 200 self.driver.get(targetURL) assert "Sauce Connect" not in self.driver.page_source
class TestWebDriver(object): def setup_method(self, method): from browsermobproxy.client import Client self.client = Client("localhost:9090") self.driver = None def teardown_method(self, method): self.client.close() if self.driver is not None: self.driver.quit() @pytest.mark.human def test_i_want_my_by_capability(self): capabilities = selenium.webdriver.common.desired_capabilities.DesiredCapabilities.CHROME self.client.add_to_capabilities(capabilities) # sets self.driver for proper clean up self._create_webdriver(capabilites=capabilities) self._run_url_rewrite_test() @pytest.mark.human def test_i_want_my_by_proxy_object(self): self._create_webdriver(capabilites=selenium.webdriver.common. desired_capabilities.DesiredCapabilities.CHROME, proxy=self.client) self._run_url_rewrite_test() def test_what_things_look_like(self): bmp_capabilities = copy.deepcopy( selenium.webdriver.common.desired_capabilities.DesiredCapabilities. FIREFOX) self.client.add_to_capabilities(bmp_capabilities) proxy_capabilities = copy.deepcopy( selenium.webdriver.common.desired_capabilities.DesiredCapabilities. FIREFOX) proxy_addr = 'localhost:%d' % self.client.port proxy = Proxy({'httpProxy': proxy_addr, 'sslProxy': proxy_addr}) proxy.add_to_capabilities(proxy_capabilities) assert bmp_capabilities == proxy_capabilities def _create_webdriver(self, capabilites, proxy=None): chrome_binary = environ.get("CHROME_BIN", None) if chrome_binary is not None: capabilites.update({ "chromeOptions": { "binary": chrome_binary, "args": ['no-sandbox'] } }) if proxy is None: self.driver = webdriver.Remote(desired_capabilities=capabilites) else: self.driver = webdriver.Remote(desired_capabilities=capabilites, proxy=proxy) def _run_url_rewrite_test(self): targetURL = "https://www.saucelabs.com/versions.js" assert 200 == self.client.rewrite_url( "https://www.saucelabs.com/versions.+", "https://www.saucelabs.com/versions.json") self.driver.get(targetURL) assert "Sauce Connect" in self.driver.page_source assert self.client.clear_all_rewrite_url_rules() == 200 self.driver.get(targetURL) assert "Sauce Connect" not in self.driver.page_source