Selenium python GBiB script

From Genecats
Revision as of 19:47, 11 February 2015 by Brianlee (talk | contribs) (→‎Running)
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()