Adapt tests to modified Selenium API

This commit is contained in:
Carsten Grohmann 2022-01-03 21:51:43 +01:00
parent e320fa56a0
commit a549a76fa2

81
test.py
View File

@ -12,6 +12,8 @@ import threading
import unittest import unittest
from selenium import webdriver from selenium import webdriver
from selenium.common.exceptions import * from selenium.common.exceptions import *
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from webdriver_manager.chrome import ChromeDriverManager from webdriver_manager.chrome import ChromeDriverManager
import warnings import warnings
@ -84,7 +86,8 @@ class TestInBrowser(TestBase):
# store driver locally # store driver locally
os.environ['WDM_LOCAL'] = '1' os.environ['WDM_LOCAL'] = '1'
self.driver = webdriver.Chrome(ChromeDriverManager().install()) s=Service(ChromeDriverManager().install())
self.driver = webdriver.Chrome(service=s)
self.driver.get("http://127.0.0.1:8000/OOMAnalyser.html") self.driver.get("http://127.0.0.1:8000/OOMAnalyser.html")
def tearDown(self): def tearDown(self):
@ -93,9 +96,9 @@ class TestInBrowser(TestBase):
self.httpd.server_close() self.httpd.server_close()
def assert_on_warn(self): def assert_on_warn(self):
notify_box = self.driver.find_element_by_id('notify_box') notify_box = self.driver.find_element(By.ID, 'notify_box')
try: try:
warning = notify_box.find_element_by_class_name('js-notify_box__msg--warning') warning = notify_box.find_element(By.CLASS_NAME, 'js-notify_box__msg--warning')
except NoSuchElementException: except NoSuchElementException:
pass pass
else: else:
@ -117,7 +120,7 @@ class TestInBrowser(TestBase):
self.assert_on_error() self.assert_on_error()
def click_analyse(self): def click_analyse(self):
analyse = self.driver.find_element_by_xpath('//button[text()="Analyse"]') analyse = self.driver.find_element(By.XPATH, '//button[text()="Analyse"]')
analyse.click() analyse.click()
def get_error_text(self): def get_error_text(self):
@ -126,19 +129,19 @@ class TestInBrowser(TestBase):
:@rtype: str :@rtype: str
""" """
notify_box = self.driver.find_element_by_id('notify_box') notify_box = self.driver.find_element(By.ID, 'notify_box')
try: try:
notify_box.find_element_by_class_name('js-notify_box__msg--error') notify_box.find_element(By.CLASS_NAME, 'js-notify_box__msg--error')
except NoSuchElementException: except NoSuchElementException:
return "" return ""
return notify_box.text return notify_box.text
def click_reset(self): def click_reset(self):
reset = self.driver.find_element_by_xpath('//button[text()="Reset"]') reset = self.driver.find_element(By.XPATH, '//button[text()="Reset"]')
if reset.is_displayed(): if reset.is_displayed():
reset.click() reset.click()
else: else:
new_analysis = self.driver.find_element_by_xpath('//a[contains(text(), "Step 1 - Enter your OOM message")]') new_analysis = self.driver.find_element(By.XPATH, '//a[contains(text(), "Step 1 - Enter your OOM message")]')
new_analysis.click() new_analysis.click()
self.assert_on_warn_error() self.assert_on_warn_error()
@ -148,13 +151,13 @@ class TestInBrowser(TestBase):
:param str text: OOM text to analyse :param str text: OOM text to analyse
""" """
textarea = self.driver.find_element_by_id('textarea_oom') textarea = self.driver.find_element(By.ID, 'textarea_oom')
self.assertEqual(textarea.get_attribute('value'), '', 'Empty textarea expected') self.assertEqual(textarea.get_attribute('value'), '', 'Empty textarea expected')
textarea.send_keys(text) textarea.send_keys(text)
self.assertNotEqual(textarea.get_attribute('value'), '', 'Missing OOM text in textarea') self.assertNotEqual(textarea.get_attribute('value'), '', 'Missing OOM text in textarea')
h3_summary = self.driver.find_element_by_xpath('//h3[text()="Summary"]') h3_summary = self.driver.find_element(By.XPATH, '//h3[text()="Summary"]')
self.assertFalse(h3_summary.is_displayed(), "Analysis details incl. <h3>Summary</h3> should be not displayed") self.assertFalse(h3_summary.is_displayed(), "Analysis details incl. <h3>Summary</h3> should be not displayed")
self.click_analyse() self.click_analyse()
@ -162,64 +165,64 @@ class TestInBrowser(TestBase):
def check_results_rhel7(self): def check_results_rhel7(self):
"""Check the results of the analysis of the RHEL7 example""" """Check the results of the analysis of the RHEL7 example"""
self.assert_on_warn_error() self.assert_on_warn_error()
h3_summary = self.driver.find_element_by_xpath('//h3[text()="Summary"]') h3_summary = self.driver.find_element(By.XPATH, '//h3[text()="Summary"]')
self.assertTrue(h3_summary.is_displayed(), "Analysis details incl. <h3>Summary</h3> should be displayed") self.assertTrue(h3_summary.is_displayed(), "Analysis details incl. <h3>Summary</h3> should be displayed")
trigger_proc_name = self.driver.find_element_by_class_name('trigger_proc_name') trigger_proc_name = self.driver.find_element(By.CLASS_NAME, 'trigger_proc_name')
self.assertEqual(trigger_proc_name.text, 'sed', 'Unexpected trigger process name') self.assertEqual(trigger_proc_name.text, 'sed', 'Unexpected trigger process name')
trigger_proc_pid = self.driver.find_element_by_class_name('trigger_proc_pid') trigger_proc_pid = self.driver.find_element(By.CLASS_NAME, 'trigger_proc_pid')
self.assertEqual(trigger_proc_pid.text, '29481', 'Unexpected trigger process pid') self.assertEqual(trigger_proc_pid.text, '29481', 'Unexpected trigger process pid')
killed_proc_score = self.driver.find_element_by_class_name('killed_proc_score') killed_proc_score = self.driver.find_element(By.CLASS_NAME, 'killed_proc_score')
self.assertEqual(killed_proc_score.text, '651', 'Unexpected OOM score of killed process') self.assertEqual(killed_proc_score.text, '651', 'Unexpected OOM score of killed process')
swap_cache_kb = self.driver.find_element_by_class_name('swap_cache_kb') swap_cache_kb = self.driver.find_element(By.CLASS_NAME, 'swap_cache_kb')
self.assertEqual(swap_cache_kb.text, '45368 kBytes') self.assertEqual(swap_cache_kb.text, '45368 kBytes')
swap_used_kb = self.driver.find_element_by_class_name('swap_used_kb') swap_used_kb = self.driver.find_element(By.CLASS_NAME, 'swap_used_kb')
self.assertEqual(swap_used_kb.text, '8343236 kBytes') self.assertEqual(swap_used_kb.text, '8343236 kBytes')
swap_free_kb = self.driver.find_element_by_class_name('swap_free_kb') swap_free_kb = self.driver.find_element(By.CLASS_NAME, 'swap_free_kb')
self.assertEqual(swap_free_kb.text, '0 kBytes') self.assertEqual(swap_free_kb.text, '0 kBytes')
swap_total_kb = self.driver.find_element_by_class_name('swap_total_kb') swap_total_kb = self.driver.find_element(By.CLASS_NAME, 'swap_total_kb')
self.assertEqual(swap_total_kb.text, '8388604 kBytes') self.assertEqual(swap_total_kb.text, '8388604 kBytes')
explanation = self.driver.find_element_by_id('explanation') explanation = self.driver.find_element(By.ID, 'explanation')
self.assertTrue('OOM killer was automatically triggered' in explanation.text, self.assertTrue('OOM killer was automatically triggered' in explanation.text,
'Missing text "OOM killer was automatically triggered"') 'Missing text "OOM killer was automatically triggered"')
head = self.driver.find_element_by_id('pstable_header') head = self.driver.find_element(By.ID, 'pstable_header')
self.assertTrue('Page Table Entries' in head.text, 'Missing column head line "Page Table Entries"') self.assertTrue('Page Table Entries' in head.text, 'Missing column head line "Page Table Entries"')
self.check_swap_active() self.check_swap_active()
def check_results_ubuntu2110(self): def check_results_ubuntu2110(self):
"""Check the results of the analysis of the Ubuntu example""" """Check the results of the analysis of the Ubuntu example"""
dirty_pages = self.driver.find_element_by_class_name('dirty_pages') dirty_pages = self.driver.find_element(By.CLASS_NAME, 'dirty_pages')
self.assertEqual(dirty_pages.text, '633 pages', 'Unexpected number of dirty pages') self.assertEqual(dirty_pages.text, '633 pages', 'Unexpected number of dirty pages')
ram_pages = self.driver.find_element_by_class_name('ram_pages') ram_pages = self.driver.find_element(By.CLASS_NAME, 'ram_pages')
self.assertEqual(ram_pages.text, '524158 pages', 'Unexpected number of RAM pages') self.assertEqual(ram_pages.text, '524158 pages', 'Unexpected number of RAM pages')
explanation = self.driver.find_element_by_id('explanation') explanation = self.driver.find_element(By.ID, 'explanation')
self.assertTrue('OOM killer was manually triggered' in explanation.text, self.assertTrue('OOM killer was manually triggered' in explanation.text,
'Missing text "OOM killer was manually triggered"') 'Missing text "OOM killer was manually triggered"')
self.assertFalse('with an OOM score of' in explanation.text, self.assertFalse('with an OOM score of' in explanation.text,
'No OOM score but text "with an OOM score of"') 'No OOM score but text "with an OOM score of"')
head = self.driver.find_element_by_id('pstable_header') head = self.driver.find_element(By.ID, 'pstable_header')
self.assertTrue('Page Table Bytes' in head.text, 'Missing column head line "Page Table Bytes"') self.assertTrue('Page Table Bytes' in head.text, 'Missing column head line "Page Table Bytes"')
self.check_swap_inactive() self.check_swap_inactive()
def check_swap_inactive(self): def check_swap_inactive(self):
explanation = self.driver.find_element_by_id('explanation') explanation = self.driver.find_element(By.ID, 'explanation')
self.assertTrue('physical memory and no swap space' in explanation.text, self.assertTrue('physical memory and no swap space' in explanation.text,
'Missing text "physical memory and no swap space"') 'Missing text "physical memory and no swap space"')
self.assertFalse('swap space are in use' in explanation.text, self.assertFalse('swap space are in use' in explanation.text,
'No swap space but text "swap space are in use"') 'No swap space but text "swap space are in use"')
def check_swap_active(self): def check_swap_active(self):
explanation = self.driver.find_element_by_id('explanation') explanation = self.driver.find_element(By.ID, 'explanation')
self.assertTrue('swap space are in use' in explanation.text, self.assertTrue('swap space are in use' in explanation.text,
'Swap space active but no text "swap space are in use"') 'Swap space active but no text "swap space are in use"')
@ -229,18 +232,18 @@ class TestInBrowser(TestBase):
def test_020_load_js(self): def test_020_load_js(self):
"""Test if JS is loaded""" """Test if JS is loaded"""
elem = self.driver.find_element_by_id("version") elem = self.driver.find_element(By.ID, "version")
self.assertIsNotNone(elem.text, "Version statement not set - JS not loaded") self.assertIsNotNone(elem.text, "Version statement not set - JS not loaded")
def test_030_insert_and_analyse_rhel7_example(self): def test_030_insert_and_analyse_rhel7_example(self):
"""Test loading and analysing RHEL7 example""" """Test loading and analysing RHEL7 example"""
textarea = self.driver.find_element_by_id('textarea_oom') textarea = self.driver.find_element(By.ID, 'textarea_oom')
self.assertEqual(textarea.get_attribute('value'), '', 'Empty textarea expected') self.assertEqual(textarea.get_attribute('value'), '', 'Empty textarea expected')
insert_example = self.driver.find_element_by_xpath('//button[contains(text(), "RHEL7" )]') insert_example = self.driver.find_element(By.XPATH, '//button[contains(text(), "RHEL7" )]')
insert_example.click() insert_example.click()
self.assertNotEqual(textarea.get_attribute('value'), '', 'Missing OOM text in textarea') self.assertNotEqual(textarea.get_attribute('value'), '', 'Missing OOM text in textarea')
h3_summary = self.driver.find_element_by_xpath('//h3[text()="Summary"]') h3_summary = self.driver.find_element(By.XPATH, '//h3[text()="Summary"]')
self.assertFalse(h3_summary.is_displayed(), "Analysis details incl. <h3>Summary</h3> should be not displayed") self.assertFalse(h3_summary.is_displayed(), "Analysis details incl. <h3>Summary</h3> should be not displayed")
self.click_analyse() self.click_analyse()
@ -248,13 +251,13 @@ class TestInBrowser(TestBase):
def test_031_insert_and_analyse_ubuntu_example(self): def test_031_insert_and_analyse_ubuntu_example(self):
"""Test loading and analysing Ubuntu 21.10 example""" """Test loading and analysing Ubuntu 21.10 example"""
textarea = self.driver.find_element_by_id('textarea_oom') textarea = self.driver.find_element(By.ID, 'textarea_oom')
self.assertEqual(textarea.get_attribute('value'), '', 'Empty textarea expected') self.assertEqual(textarea.get_attribute('value'), '', 'Empty textarea expected')
insert_example = self.driver.find_element_by_xpath('//button[contains(text(), "Ubuntu" )]') insert_example = self.driver.find_element(By.XPATH, '//button[contains(text(), "Ubuntu" )]')
insert_example.click() insert_example.click()
self.assertNotEqual(textarea.get_attribute('value'), '', 'Missing OOM text in textarea') self.assertNotEqual(textarea.get_attribute('value'), '', 'Missing OOM text in textarea')
h3_summary = self.driver.find_element_by_xpath('//h3[text()="Summary"]') h3_summary = self.driver.find_element(By.XPATH, '//h3[text()="Summary"]')
self.assertFalse(h3_summary.is_displayed(), "Analysis details incl. <h3>Summary</h3> should be not displayed") self.assertFalse(h3_summary.is_displayed(), "Analysis details incl. <h3>Summary</h3> should be not displayed")
self.click_analyse() self.click_analyse()
@ -262,13 +265,13 @@ class TestInBrowser(TestBase):
def test_032_empty_textarea(self): def test_032_empty_textarea(self):
"""Test "Analyse" with empty textarea""" """Test "Analyse" with empty textarea"""
textarea = self.driver.find_element_by_id('textarea_oom') textarea = self.driver.find_element(By.ID, 'textarea_oom')
self.assertEqual(textarea.get_attribute('value'), '', 'Empty textarea expected') self.assertEqual(textarea.get_attribute('value'), '', 'Empty textarea expected')
# textarea.send_keys(text) # textarea.send_keys(text)
self.assertEqual(textarea.get_attribute('value'), '', 'Expected empty text area, but text found') self.assertEqual(textarea.get_attribute('value'), '', 'Expected empty text area, but text found')
h3_summary = self.driver.find_element_by_xpath('//h3[text()="Summary"]') h3_summary = self.driver.find_element(By.XPATH, '//h3[text()="Summary"]')
self.assertFalse(h3_summary.is_displayed(), "Analysis details incl. <h3>Summary</h3> should be not displayed") self.assertFalse(h3_summary.is_displayed(), "Analysis details incl. <h3>Summary</h3> should be not displayed")
self.click_analyse() self.click_analyse()
@ -335,7 +338,7 @@ Killed process 6576 (java) total-vm:33914892kB, anon-rss:20629004kB, file-rss:0k
self.analyse_oom(example) self.analyse_oom(example)
self.assert_on_warn_error() self.assert_on_warn_error()
h3_summary = self.driver.find_element_by_xpath('//h3[text()="Summary"]') h3_summary = self.driver.find_element(By.XPATH, '//h3[text()="Summary"]')
self.assertTrue(h3_summary.is_displayed(), "Analysis details incl. <h3>Summary</h3> should be displayed") self.assertTrue(h3_summary.is_displayed(), "Analysis details incl. <h3>Summary</h3> should be displayed")
def test_050_kill_proc_space(self): def test_050_kill_proc_space(self):
@ -345,7 +348,7 @@ Killed process 6576 (java) total-vm:33914892kB, anon-rss:20629004kB, file-rss:0k
self.analyse_oom(example) self.analyse_oom(example)
self.assert_on_warn_error() self.assert_on_warn_error()
h3_summary = self.driver.find_element_by_xpath('//h3[text()="Summary"]') h3_summary = self.driver.find_element(By.XPATH, '//h3[text()="Summary"]')
self.assertTrue(h3_summary.is_displayed(), "Analysis details incl. <h3>Summary</h3> should be displayed") self.assertTrue(h3_summary.is_displayed(), "Analysis details incl. <h3>Summary</h3> should be displayed")
def test_060_removal_of_leading_but_useless_columns(self): def test_060_removal_of_leading_but_useless_columns(self):
@ -376,7 +379,7 @@ Killed process 6576 (java) total-vm:33914892kB, anon-rss:20629004kB, file-rss:0k
self.analyse_oom(example) self.analyse_oom(example)
self.assert_on_warn_error() self.assert_on_warn_error()
explanation = self.driver.find_element_by_id('explanation') explanation = self.driver.find_element(By.ID, 'explanation')
self.assertTrue('OOM killer was manually triggered' in explanation.text, self.assertTrue('OOM killer was manually triggered' in explanation.text,
'Missing text "OOM killer was manually triggered"') 'Missing text "OOM killer was manually triggered"')