Selenium python GBiB script
From Genecats
Jump to navigationJump to search
Overview
This is an example script that runs on python2.7 with installed selenium (pip install selenium) .
Running
python gbib.selenium.py
Results desired:
$python gbib.selenium.py . ---------------------------------------------------------------------- Ran 1 test in 106.073s OK
- Be sure to watch the script run, it isn't verifying results happen. For bonus points you could watch the GBiB error log.
Script Code
from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys from selenium.webdriver.support.ui import Select from selenium.common.exceptions import NoSuchElementException import unittest, time, re class Genome(unittest.TestCase): def setUp(self): self.driver = webdriver.Firefox() self.driver.implicitly_wait(30) self.base_url = "http://127.0.0.1:1234/cgi-bin/hgGateway" self.verificationErrors = [] self.accept_next_alert = True def test_genome(self): driver = self.driver driver.get(self.base_url + "Be sure you are not being redirected to genome vs. genome-euro") driver.get("http://127.0.0.1:1234/cgi-bin/hgGateway") # ERROR: Caught exception [ERROR: Unsupported command [selectWindow | null | ]] driver.get("http://127.0.0.1:1234/cgi-bin/hgGateway") driver.find_element_by_id("home-link").click() driver.find_element_by_link_text("Genome Browser").click() driver.find_element_by_link_text("Click here to reset").click() driver.find_element_by_link_text("click here to continue").click() driver.find_element_by_name("Submit").click() driver.find_element_by_link_text("Genome Browser").click() driver.find_element_by_link_text("Genomes").click() driver.find_element_by_link_text("Click here to reset").click() driver.find_element_by_link_text("click here to continue").click() Select(driver.find_element_by_name("org")).select_by_visible_text("Mouse") driver.find_element_by_name("Submit").click() driver.find_element_by_link_text("Genomes").click() Select(driver.find_element_by_css_selector("select[name=\"db\"]")).select_by_visible_text("July 2007 (NCBI37/mm9)") driver.find_element_by_name("Submit").click() driver.find_element_by_link_text("Genomes").click() driver.find_element_by_link_text("Click here to reset").click() driver.find_element_by_link_text("click here to continue").click() driver.find_element_by_name("Submit").click() driver.find_element_by_xpath("//td[@id='td_data_knownGene']/div[2]/map/area[4]").click() driver.find_element_by_link_text("Genome Browser").click() driver.find_element_by_css_selector("map[name=\"map_data_refGene\"] > area.area").click() driver.find_element_by_css_selector("map[name=\"map_data_refGene\"] > area.area").click() driver.find_element_by_link_text("Genome Browser").click() driver.find_element_by_css_selector("input[type=\"button\"]").click() driver.find_element_by_name("hgct_customText").clear() driver.find_element_by_name("hgct_customText").send_keys("http://hgwdev.cse.ucsc.edu/~brianlee/customTracks/examples.txt") driver.find_element_by_name("Submit").click() driver.find_element_by_name("Submit").click() driver.find_element_by_link_text("Genomes").click() driver.find_element_by_link_text("Click here to reset").click() driver.find_element_by_link_text("click here to continue").click() driver.find_element_by_xpath("//input[@value='track hubs']").click() driver.find_element_by_link_text("My Hubs").click() driver.find_element_by_id("hubUrl").clear() driver.find_element_by_id("hubUrl").send_keys("http://hgwdev.cse.ucsc.edu/~brianlee/examples/hubExample/hub.txt") driver.find_element_by_name("hubAddButton").click() driver.find_element_by_name("Submit").click() driver.find_element_by_link_text("Genomes").click() driver.find_element_by_link_text("Click here to reset").click() driver.find_element_by_link_text("click here to continue").click() driver.get("http://127.0.0.1:1234/cgi-bin/hgBlat") driver.find_element_by_name("userSeq").clear() driver.find_element_by_name("userSeq").send_keys("AACAAAATCAAACTGTTTTTGTTGGACAATTCTCTGTTAAGCAGCTATAA\nGCTGAATGACATTAACCGCAAAATGTAACCATAAAGGCCATAAACCCGAC\nATTGTTAATTAATTAAATGCCTCATTAACTTTTTTAAAAACATGATTTAT\nTCGATTCATAGAAAACTTAACCATCACTACTAAATGCACACACATGCGGT\nTCCACATTGGCATCTTAGCCTAAGAACAGACAGGTTCAACTGTAACTGGC\nCTTTCAGGTGGTCTATTACAGATCTGAAGACAGAGGGTGTTTCTAAACCT\nCAAGAACCAGATTAACAGAAAACAAAGCTTGAGCAGCCTTTTTATTGCAT\nGTGGTATCTTTTTAGCTAAGCAGAAGACAATGATAAAGAGGGGTTTTGGG\nAAACCTCTCCCAAAGCTGTGCATTCATACCGTACCTTATCCTGTTAAGCA\nAACTGTTCTTTTATTTTAAAGGGTTTACACTGCCACATCTGAATGGACTA") driver.find_element_by_name("Submit").click() driver.find_element_by_link_text("browser").click() driver.get("http://127.0.0.1:1234/cgi-bin/hgPcr") driver.find_element_by_name("wp_f").clear() driver.find_element_by_name("wp_f").send_keys("AACAAAATCAAACTGTTTTTGTTGGACAATTCTCTGTTAAGCAGCTATAA") driver.find_element_by_name("wp_r").clear() driver.find_element_by_name("wp_r").send_keys("AACTGTTCTTTTATTTTAAAGGGTTTACACTGCCACATCTGAATGGACTA") driver.find_element_by_name("wp_flipReverse").click() driver.find_element_by_name("Submit").click() driver.find_element_by_link_text("chrX:39918932+39919431").click() driver.find_element_by_link_text("Genomes").click() driver.find_element_by_link_text("Click here to reset").click() driver.find_element_by_link_text("click here to continue").click() driver.find_element_by_name("Submit").click() driver.get("http://127.0.0.1:1234/cgi-bin/hgConvert") Select(driver.find_element_by_name("hglft_toOrg")).select_by_visible_text("Human") Select(driver.find_element_by_name("hglft_toOrg")).select_by_visible_text("Mouse") Select(driver.find_element_by_name("hglft_toDb")).select_by_visible_text("July 2007 (NCBI37/mm9)") driver.find_element_by_name("hglft_doConvert").click() driver.find_element_by_link_text("chr16:90220619-90227077").click() driver.find_element_by_link_text("Genome Browser").click() driver.get("http://127.0.0.1:1234/cgi-bin/hgLiftOver") Select(driver.find_element_by_name("hglft_fromOrg")).select_by_visible_text("Human") driver.find_element_by_name("hglft_userData").clear() driver.find_element_by_name("hglft_userData").send_keys("chr21:33,031,597-33,041,570") driver.find_element_by_name("hglft_multiple").click() driver.find_element_by_name("Submit").click() driver.find_element_by_link_text("View Conversions").click() driver.find_element_by_link_text("Genome Browser").click() self.assertEqual("chr16:90,220,619-90,227,077", driver.find_element_by_id("positionDisplay").text) driver.get("http://127.0.0.1:1234/cgi-bin/hgGateway") def is_element_present(self, how, what): try: self.driver.find_element(by=how, value=what) except NoSuchElementException as e: return False return True def is_alert_present(self): try: self.driver.switch_to_alert() except NoAlertPresentException as e: return False return True def close_alert_and_get_its_text(self): try: alert = self.driver.switch_to_alert() alert_text = alert.text if self.accept_next_alert: alert.accept() else: alert.dismiss() return alert_text finally: self.accept_next_alert = True def tearDown(self): self.driver.quit() self.assertEqual([], self.verificationErrors) if __name__ == "__main__": unittest.main()