Selenium python GBiB script
From Genecats
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.
Script Code
This code probably has imperfections, it is copy of an earlier script pointed to genome-euro with the http replaced with GBiBs 127.0.0.01:1234 address.
The process to build it was to use FireFoxes Selenium plug-in to record steps. Then to use the plug-in to export it as python. I recall it needed some changes to work with python2.7. I tested that I could cut and paste the below and execute the code in my environment (Python 2.7.6 with the pip install of selenium).
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("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()