Skip to content

Selenium Web Driver: some tricks using Python

March 5, 2012

After migrating to Web Driver it took time to get with the following things:

* Selecting element from drop down list (now not just select command), e.g.:

el = driver.find_element_by_id('id_line')
for option in el.find_elements_by_tag_name('option'):
    if option.text == "line to select":
        option.click()
        break

* If there are lot of element existence checks that wrapped in try-catch block it is useful to reduce implicit timeout to reduce overall test execution time, e.g. for Firefox driver:

def setUp(self):
    self.driver = webdriver.Firefox()
    self.driver.implicitly_wait(5)
    self.verificationErrors = []

* Try to avoid time.sleep(N) commands in tests it is better to wait for some action or change in system. So the best way to make construction:


try:
    if self.is_element_present(By.CSS_SELECTOR, "h3 > strong"):
        driver.find_element_by_link_text("169_convertedvideo_425").click()
        self.assertTrue(int(driver.find_elements_by_css_selector("#video_source span.black")[0].text) >= 0)
    else:
        raise Exception(self.id() + ".ErrorText!")
except Exception as e: self.verificationErrors.append(str(e))
finally:
    self.removeAllMonitoringSources(driver)

or wait by small ticks:


for i in range(60):
    try:
        if self.is_element_present(By.LINK_TEXT, "Exit"): break
    except: pass

    time.sleep(1)

else: self.fail("time out")

* Xpath is always slower in IE
* If some elements in DOM are hidden you can access them using JavaScript execution command driver.execute_script(script, *args)

Advertisements

From → Selenium

3 Comments
  1. ryan permalink

    Why did you decide against using WebDriverWait in your third example? So something like:
    WebDriverWait(driver, 60).until(lambda driver : driver.find_element_by_link_text (“169_convertedvideo_425”)

  2. Actually it is the same but using another code structure 🙂

  3. sagarika permalink

    Help me to configure selenium web-driver under RUBY

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: