def test4(self): b = Browser() driver = b.driver driver.get("https://the-internet.herokuapp.com/") ba = WebDriverWait(driver, 5, 1, (ElementNotVisibleException)).until( EC.presence_of_element_located((By.XPATH, "//*[@id='content']/ul/li[2]/a")) ) ba.click() h = driver.window_handles for i in h: print(i) b.close()
def __init__(self, username=None, password=None, gist_config_url=None, profile=None, cycle_frequency=60): # Configure Logging logging.basicConfig(level=logging.DEBUG, filename='/dev/stdout') if not username or not password: logging.critical("OKTA username and password are required.") sys.exit(1) if not gist_config_url: logging.critical("Provided git repo URL is empty.") sys.exit(1) self.gist = Gistapi(gist_config_url) self.username = username self.password = password self.browser = Browser(self.username, self.password) self.num_tabs = 1 self.client = None self.profile = profile self.cycle_frequency = cycle_frequency self.run_cycle_tab_thread = True self.cycle_tab_thread = None self.bind_window = None self.dashboards = self.gist.get_dashboards(profile)
def test_firefox(self): with Browser(browser_name=Browser.FIREFOX, headless=True) as b: b.goto("https://the-internet.herokuapp.com/").link( "xpath:=//*[@id='content']/ul/li[1]/a").click() t = b.element("content").text #print(t) self.assertTrue("Also known as split testing" in t)
def test_html(self): with Browser(browser_name = Browser.CHROME, incognito=True, headless=True) as b: b.goto("https://the-internet.herokuapp.com/notification_message_rendered") self.assertTrue("The message displayed above the heading is a notification message" in b.html().text) rc = b.content(raw=True) self.assertTrue(isinstance(rc, bytes)) self.assertTrue(b.response_encoding == "utf-8")
def test_links(self): with Browser() as b: h = b.html(url="http://google.com") ls = h.elements.links() #print(ls) self.assertTrue(len(ls) > 0) p = h.save() self.assertTrue(file_exists(p))
def test_link(self): bro = Browser(browser_name=Browser.CHROME, headless=True) bro.goto("https://the-internet.herokuapp.com/").link( "xpath:=//*[@id='content']/ul/li[1]/a").click() #phew! t = bro.element("content").text self.assertTrue("Also known as split testing" in t) bro.close()
def test_get_async(self): with Browser() as b: r = b.get(url="https://api.github.com/users/abranjith/repos", asynch=True) while not r.is_request_done: print("waiting for get to finish...") time.sleep(0.5) j = json.loads(r.content) self.assertTrue(len(j) > 0)
def test_render(self): with Browser() as bro: h = bro.html( url="https://css-tricks.com/ajax-load-container-contents/") h.render() e = h.elements.find_by_id('jp-relatedposts') d = dict(e.attrib) self.assertEqual(d['id'], "jp-relatedposts") self.assertEqual(d['class'], "jp-relatedposts")
def test_search1(self): with Browser() as b: h = b.html(url="http://dollarrupee.in/") search_text = "Current USD to INR exchange rate equals {} Rupees per 1 US Dollar" result = h.search(search_text, use_text=True) rs = [] if result: for r in result: rs.append(r) self.assertTrue(len(rs) > 0)
def test5(self): with Browser(browser_name=Browser.CHROME, headless=True) as b: b.goto("https://www.google.com/") b.input("name:=q").enter("india news") b.button("name:=btnK").click() p = b.take_screenshot() print("path ", p) t = b.html().elements.links(url_only=True, images=False) for a in t: print(a)
def test_contents(self): bro = Browser(browser_name=Browser.CHROME, headless=True) bro.goto("https://httpbin.org/get") c = bro.content() self.assertTrue(isinstance(c, str) and r"</pre></body></html>" in c) rc = bro.content(raw=True) self.assertTrue(isinstance(rc, bytes)) #print(bro.html()) #html self.assertTrue(bro.json['url'] == "https://httpbin.org/get") #json self.assertTrue(r"Content-Type" in bro.response_headers) self.assertTrue(bro.response_code == 200) #print(bro.response_encoding) bro.close()
def test_search(self): with Browser(browser_name=Browser.CHROME, headless=True) as b: h = b.goto("http://dollarrupee.in/").html() search_text = "Current USD to INR exchange rate equals {} Rupees per 1 US Dollar" result = h.search(search_text) rs = [] if result: for r in result: rs.append(r) self.assertTrue(len(rs) > 0) self.assertTrue("<strong>" in rs[0])
def test_elements(self): dp = "C:\\Users\Ranjith\\pybrowser\\browserdrivers" with Browser(browser_name=Browser.CHROME, headless=True, driver_path=dp) as b: h = b.goto( "https://the-internet.herokuapp.com/forgot_password").html() e = h.elements.find_by_id('email') p = h.save() self.assertTrue(file_exists(p)) self.assertEqual(e.type, "text") self.assertEqual(e.name, "email")
def test_searchall_html(self): with Browser() as b: h = b.html(url="http://chromedriver.chromium.org/downloads") #search_text = "Latest Release: ChromeDriver {} " search_text = "ChromeDriver {} " result = h.search_all(search_text, use_text=True) rs = [] for r in result: for d in r: rs.append(d) #print(rs) self.assertTrue(len(rs) > 1)
def test_ie(self): with Browser(browser_name=Browser.IE, headless=True) as b: e = b.goto("https://the-internet.herokuapp.com/").link( "xpath:=//*[@id='content']/ul/li[1]/a") self.assertTrue(e.is_found) #print(e.id) #print(e.href) e.highlight() #e.element.send_keys("") e.click() t = b.element("content").text #print(t) self.assertTrue("Also known as split testing" in t)
def test_form(self): #bro = Browser(Browser.CHROME) form_data = [("username", "tomsmith"), ("password", "SuperSecretPassword!")] with Browser(browser_name=Browser.CHROME, headless=True) as b: b.goto("https://the-internet.herokuapp.com/login") b.form("login").fill_and_submit_form(form_data) cs = b.cookies #print(cs) self.assertTrue(len(cs) > 0) self.assertTrue("the-internet.herokuapp.com" in cs[0]['domain']) self.assertEqual(200, b.response_code) t = b.element("flash").text.strip() self.assertTrue("You logged into a secure area" in t)
def test_iffound(self): with Browser(browser_name=Browser.CHROME, wait_time=1, headless=True) as b: b.goto("https://the-internet.herokuapp.com/") #no such element btn = b.button("byby") self.assertFalse(btn.is_found) with self.assertRaises(NoSuchElementException): btn.is_displayed with self.assertRaises(NoSuchElementException): btn.is_enabled with self.assertRaises(NoSuchElementException): btn.is_stale self.assertIsNone(btn.if_found.click())
def test_render_script(self): with Browser() as bro: s = '''() => { return { width: document.documentElement.clientWidth, height: document.documentElement.clientHeight, deviceScaleFactor: window.devicePixelRatio, } }''' h = bro.html(url="https://the-internet.herokuapp.com/") r = h.render(script=s) self.assertTrue(r['width'] > 0) self.assertTrue(r['height'] > 0) self.assertTrue(r['deviceScaleFactor'] > 0)
def test_sample(self): with Browser(browser_name=Browser.CHROME, headless=True) as b: b.goto("https://www.google.com/") b.refresh() b.back() b.forward() self.assertEqual(200, b.response_code) hd = b.response_headers #print(hd) self.assertTrue("text/html" in hd['Content-Type']) b.input("name:=q").enter("news") b.button("name:=btnK").click() f = b.take_screenshot() self.assertTrue(file_exists(f)) ls = b.html().elements.links() self.assertTrue(len(ls) > 0)
def test_cachedprops(self): BLANK = "" with Browser(browser_name=Browser.FIREFOX, headless=True) as b: b.goto("https://the-internet.herokuapp.com/forgot_password") btn = b.button("form_submit") self.assertTrue(btn.is_found) self.assertTrue(btn.is_displayed) self.assertTrue(btn.is_enabled) self.assertFalse(btn.is_stale) #print(btn.action_obj.__dict__) self.assertEqual(btn.tag_name, "button") self.assertEqual(btn.id, "form_submit") self.assertEqual(btn.name, BLANK) self.assertEqual(btn.type, "submit") self.assertEqual(btn.css_classes, ["radius"]) self.assertEqual(btn.value, BLANK) self.assertEqual(btn.text, "Retrieve password") self.assertIsNone(btn.href) #print(btn.action_obj.__dict__) btn.refresh() self.assertEqual(btn.id, "form_submit")
def test_file_download_upload(self): with Browser(browser_name=Browser.CHROME, headless=True) as b: home_dir = os.getenv('HOME') or os.path.expanduser( os.getenv('USERPROFILE')) to_dir = os.path.join(home_dir, "tmp") fl = "some-file.txt" f = os.path.join(to_dir, fl) #preset if file_exists(f): rm_files(f) #before self.assertFalse(file_exists(f)) start = datetime.now() end = start b.goto("https://the-internet.herokuapp.com") u = b.link("PARTIAL_LINK_TEXT:=Download").url self.assertTrue(u, "https://the-internet.herokuapp.com/download") b.link("PARTIAL_LINK_TEXT:=Download").click() fd = b.file("PARTIAL_LINK_TEXT:=some-file.txt").download( directory=to_dir) while not file_exists(f): end = datetime.now() total_secs = (end - start).total_seconds() self.assertTrue(total_secs > 0) #wait for callback to happen time.sleep(1) self.assertTrue(len(fd.downloaded_files) > 0) self.assertTrue(fd.is_download_complete) b.back() u2 = b.link("PARTIAL_LINK_TEXT:=Upload").url self.assertTrue(u2, "https://the-internet.herokuapp.com/upload") b.link("PARTIAL_LINK_TEXT:=Upload").click() b.file("file-upload").upload(filename=f) b.button("file-submit").click() t = b.element("uploaded-files").text.strip() self.assertTrue(t, fl)
def test_get(self): with Browser() as b: r = b.get(url="https://api.github.com/users/abranjith/repos") j = json.loads(r.response.content) print(j) self.assertTrue(len(j) > 0)
def init_browser(self): self.browser = Browser(self.username, self.password)
def test_screenshots(self): home_dir = os.getenv('HOME') or os.path.expanduser( os.getenv('USERPROFILE')) bro = Browser(browser_name=Browser.CHROME, headless=True) bro.goto("https://www.google.com/") v = bro.button("name:=btnK").name self.assertEqual(v, "btnK") bro.input("name:=q").enter("sachin") bro.button("name:=btnK").click() f = bro.take_screenshot() self.assertTrue(file_exists(f)) bro.input("name:=q").enter("virat kohli").submit() f = bro.take_screenshot(os.path.join(home_dir, "tmp")) self.assertTrue(file_exists(f)) bro.input("name:=q").enter("ab de villiers").submit() f = bro.take_screenshot(os.path.join(home_dir, "tmp")) self.assertTrue(file_exists(f)) bro.input("name:=q").enter("dhoni").submit() f = bro.take_screenshot("googly_dhoni") self.assertTrue(file_exists(f)) bro.input("name:=q").enter("ganguly").submit() f = bro.take_screenshot("googly_ganguly.png") self.assertTrue(file_exists(f)) bro.close()
def test_onexception(self): with Browser(browser_name=Browser.CHROME, headless=True, wait_time=1) as b: b.goto("https://the-internet.herokuapp.com/") #no such element with self.assertRaises(NoSuchElementException): b.button("byby").click()
def test_nobrowser(self): with Browser() as b: h = b.html(url="https://the-internet.herokuapp.com/") l = h.elements.links() #print(l) self.assertTrue(len(l) == 2)
def test_highlight(self): with Browser(browser_name=Browser.FIREFOX, headless=True) as b: b.goto("https://the-internet.herokuapp.com/login") b.input("username").highlight() b.input("password").highlight() b.button("xpath:=//*[@id='login']/button").highlight()