Skip to content

Commit

Permalink
Add webdriver implicit wait test and html
Browse files Browse the repository at this point in the history
Signed-off-by: AutomatedTester <dburns@mozilla.com>
  • Loading branch information
Dale Annin authored and AutomatedTester committed Mar 17, 2014
1 parent 12b1763 commit 70bbfcb
Show file tree
Hide file tree
Showing 2 changed files with 104 additions and 0 deletions.
66 changes: 66 additions & 0 deletions webdriver/timeouts/implicit_waits_tests.py
@@ -0,0 +1,66 @@
# -*- mode: python; fill-column: 100; comment-column: 100; -*-

import os
import sys
import unittest
from selenium.common.exceptions import NoSuchElementException

sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), os.path.pardir)))
import base_test


class ImplicitWaitsTests(base_test.WebDriverBaseTest):

def setUp(self):
self.driver.get(self.webserver.where_is('timeouts/res/implicit_waits_tests.html'))

def test_find_element_by_id(self):
add = self.driver.find_element_by_id("adder")
self.driver.implicitly_wait(3)
add.click()
self.driver.find_element_by_id("box0") # All is well if this doesn't throw.

def test_should_still_fail_to_find_an_element_when_implicit_waits_are_enabled(self):
self.driver.implicitly_wait(0.5)
try:
self.driver.find_element_by_id("box0")
self.fail("Expected NoSuchElementException to have been thrown")
except NoSuchElementException as e:
pass
except Exception as e:
self.fail("Expected NoSuchElementException but got " + str(e))

def test_should_return_after_first_attempt_to_find_one_after_disabling_implicit_waits(self):
self.driver.implicitly_wait(3)
self.driver.implicitly_wait(0)
try:
self.driver.find_element_by_id("box0")
self.fail("Expected NoSuchElementException to have been thrown")
except NoSuchElementException as e:
pass
except Exception as e:
self.fail("Expected NoSuchElementException but got " + str(e))

def test_should_implicitly_wait_until_at_least_one_element_is_found_when_searching_for_many(self):
add = self.driver.find_element_by_id("adder")
self.driver.implicitly_wait(2)
add.click()
add.click()
elements = self.driver.find_elements_by_class_name("redbox")
self.assertTrue(len(elements) >= 1)

def test_should_still_fail_to_find_an_element_by_class_when_implicit_waits_are_enabled(self):
self.driver.implicitly_wait(0.5)
elements = self.driver.find_elements_by_class_name("redbox")
self.assertEqual(0, len(elements))

def test_should_return_after_first_attempt_to_find_many_after_disabling_implicit_waits(self):
add = self.driver.find_element_by_id("adder")
self.driver.implicitly_wait(1.1)
self.driver.implicitly_wait(0)
add.click()
elements = self.driver.find_elements_by_class_name("redbox")
self.assertEqual(0, len(elements))

if __name__ == "__main__":
unittest.main()
38 changes: 38 additions & 0 deletions webdriver/timeouts/res/implicit_waits_tests.html
@@ -0,0 +1,38 @@
<!DOCTYPE html>
<html>
<head>
<title></title>
<script type="text/javascript">
var next = 0;

function addMore() {
var box = document.createElement('DIV');
box.id = 'box' + next++;
box.className = 'redbox';
box.style.width = '150px';
box.style.height = '150px';
box.style.backgroundColor = 'red';
box.style.border = '1px solid black';
box.style.margin = '5px';

window.setTimeout(function() {
document.body.appendChild(box);
}, 1000);
}

function reveal() {
var elem = document.getElementById('revealed');
window.setTimeout(function() {
elem.style.display = '';
}, 1000);
}
</script>
</head>
<body>
<input id="adder" type="button" value="Add a box!" onclick="addMore()"/>

<input id="reveal" type="button" value="Reveal a new input" onclick="reveal();" />

<input id="revealed" style="display:none;" />
</body>
</html>

0 comments on commit 70bbfcb

Please sign in to comment.