Thursday, 17 October 2013

Try and catch command



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")

 Put the Thread to Sleep for the specific time
   private void sleep(long time) {
      try {
         Thread.sleep(time);
      } catch (InterruptedException e) {
      }
   }

   //Inside my Test Method

   //check if the element is loaded
   while (!webElement.isLoaded) {
        //sleep for a sec
         sleep(1000);
      }

No comments:

Post a Comment