|
| 1 | +try: |
| 2 | + import mock |
| 3 | +except ImportError: |
| 4 | + from unittest import mock |
| 5 | + |
| 6 | +from selenium.webdriver.common.by import By |
| 7 | +from selenium.webdriver.common.keys import Keys |
| 8 | + |
1 | 9 | from explicit import waiter
|
2 | 10 |
|
| 11 | +CSS = By.CSS_SELECTOR |
| 12 | + |
| 13 | + |
| 14 | +def test_find_element_with_defaults(driver, element): |
| 15 | + """ Verify the waiter can find and return an element |
| 16 | + """ |
| 17 | + mock_css_path = "div.mock-css-path" |
| 18 | + |
| 19 | + driver.find_element.side_effect = [None, element] |
| 20 | + |
| 21 | + elem = waiter.find_element(driver, mock_css_path) |
| 22 | + |
| 23 | + assert driver.find_element.called |
| 24 | + assert elem is element |
| 25 | + assert len(driver.mock_calls) == 2 |
| 26 | + assert driver.find_element.call_args_list == [mock.call(CSS, mock_css_path), |
| 27 | + mock.call(CSS, mock_css_path)] |
| 28 | + |
| 29 | + |
| 30 | +def test_find_element_with_non_defaults(driver, element): |
| 31 | + """ Verify the waiter can find and return an element when using |
| 32 | + non-default kwargs |
| 33 | + """ |
| 34 | + mock_xpath_path = "div[@id=mock-id]" |
| 35 | + |
| 36 | + driver.find_element.side_effect = [None, element] |
| 37 | + |
| 38 | + elem = waiter.find_element(driver, mock_xpath_path, by=By.XPATH) |
3 | 39 |
|
4 |
| -def test_find_element(driver, element): |
5 |
| - """ Verify the water can find and return an element |
| 40 | + assert driver.find_element.called |
| 41 | + assert elem is element |
| 42 | + assert len(driver.mock_calls) == 2 |
| 43 | + assert driver.find_element.call_args_list == [mock.call(By.XPATH, mock_xpath_path), |
| 44 | + mock.call(By.XPATH, mock_xpath_path)] |
| 45 | + |
| 46 | + |
| 47 | +def test_find_write_with_defaults(driver, element): |
| 48 | + """ Verify the waiter can find and write to an element, using |
| 49 | + default kwargs |
6 | 50 | """
|
| 51 | + mock_css_path = "div.mock-css-path" |
| 52 | + mock_write_string = "mock write string" |
| 53 | + |
7 | 54 | driver.find_element.side_effect = [None, element]
|
8 | 55 |
|
9 |
| - elem = waiter.find_element(driver, "div.mock-css-path") |
| 56 | + elem = waiter.find_write(driver, mock_css_path, mock_write_string) |
10 | 57 |
|
| 58 | + # Element locating asserts |
11 | 59 | assert driver.find_element.called
|
| 60 | + assert elem is element |
12 | 61 | assert len(driver.mock_calls) == 2
|
| 62 | + assert driver.find_element.call_args_list == [mock.call(CSS, mock_css_path), |
| 63 | + mock.call(CSS, mock_css_path)] |
| 64 | + |
| 65 | + # Element writing asserts |
| 66 | + assert elem.clear.called |
| 67 | + assert len(elem.send_keys.call_args_list) == 1 |
| 68 | + assert elem.send_keys.call_args == mock.call(mock_write_string) |
| 69 | + |
| 70 | + |
| 71 | +def test_find_write_with_non_defaults(driver, element): |
| 72 | + """ Verify the waiter can find and write to an element, using |
| 73 | + non-default kwargs |
| 74 | + """ |
| 75 | + mock_id_path = "mock id" |
| 76 | + mock_write_string = "mock write string" |
| 77 | + |
| 78 | + driver.find_element.side_effect = [None, element] |
| 79 | + |
| 80 | + elem = waiter.find_write(driver, mock_id_path, mock_write_string, |
| 81 | + by=By.ID, clear_first=False, send_enter=True) |
| 82 | + |
| 83 | + # Element locating asserts |
| 84 | + assert driver.find_element.called |
13 | 85 | assert elem is element
|
| 86 | + assert len(driver.mock_calls) == 2 |
| 87 | + assert driver.find_element.call_args_list == [mock.call(By.ID, mock_id_path), |
| 88 | + mock.call(By.ID, mock_id_path)] |
| 89 | + |
| 90 | + # Element writing asserts |
| 91 | + assert not elem.clear.called |
| 92 | + assert len(elem.send_keys.call_args_list) == 2 |
| 93 | + assert elem.send_keys.call_args_list == [mock.call(mock_write_string), |
| 94 | + mock.call(Keys.ENTER)] |
0 commit comments