Index: components/test/data/password_manager/environment.py |
diff --git a/components/test/data/password_manager/environment.py b/components/test/data/password_manager/environment.py |
new file mode 100644 |
index 0000000000000000000000000000000000000000..2f287fc2cc681e0dbd92a4c78626276f99da837d |
--- /dev/null |
+++ b/components/test/data/password_manager/environment.py |
@@ -0,0 +1,104 @@ |
+import time |
+from selenium import webdriver |
+from selenium.webdriver.chrome.options import Options |
+import xml.etree.ElementTree as ET |
+ |
+from website import Website |
+ |
+ |
+class Environment: |
+ |
+ def __init__(self, passwords_file = ""): |
+ options = Options() |
+ """Use random empty folder for profile, otherwise chromedriver is going to |
+ create it's own where saving passwords is disabled. |
+ """ |
+ options.add_argument("enable-automatic-password-saving") |
+ #chrome path |
+ options.binary_location = ( |
+ "/usr/local/google/home/rchtara/chrome/src/out/Debug/chrome") |
+ #new profile path |
+ options.add_argument("user-data-dir=/tmp/ChromePasswordManagerTestvvvvvv") |
+ #chromedriver path |
+ self.driver = webdriver.Chrome( |
+ "/usr/local/google/home/rchtara/chrome/src/out/Debug/chromedriver", 0, |
+ options) |
+ self.internals_window = self.driver.current_window_handle |
+ self.websitewindow = None |
+ self.websites = [] |
+ |
+ self.passwords_tree = None |
+ if passwords_file != "": |
+ self.passwords_tree = ET.parse(passwords_file).getroot() |
+ |
+ def AddWebsite(self, |
+ name, |
+ username = None, |
+ password = None, |
+ username_not_auto=False): |
+ website = ( |
+ Website( |
+ name, username, password, self.driver, self, username_not_auto)) |
+ self.websites.append(website) |
+ return website |
+ |
+ def RemoveAllPasswords(self): |
+ print "RemoveAllPasswords" |
+ self.driver.get("chrome://settings/passwords") |
+ self.driver.switch_to_frame("settings") |
+ |
+ for website in self.websites: |
+ urls, _ = self.GetPasswordsAndButtons() |
+ website.RemoveAllPasswords(urls) |
+ |
+ def GetPasswordsAndButtons(self): |
+ arr = self.driver.find_elements_by_css_selector( |
+ "#saved-passwords-list .deletable-item") |
+ urls = [] |
+ remove_buttons = [] |
+ for entry in arr: |
+ urls.append(entry.find_element_by_class_name("url").text) |
+ remove_buttons.append( |
+ entry.find_element_by_class_name("row-delete-button")) |
+ return (urls, remove_buttons) |
+ |
+ def NewWindow(self): |
+ if self.websitewindow == None: |
+ self.driver.get("https://google.com") |
+ |
+ """It's not possible to open a new tab to chrome:// urls directly, |
+ this why we go to google.com website then we go to chrome:// |
+ sometime chromedriver doesn't detect that www.google.com is loaded |
+ and the script just stops, this is why you should redo the |
+ tests again. |
+ """ |
+ |
+ a = self.driver.execute_script( |
+ "var d=document; var " |
+ "a=d.createElement('a');a.target='_blank';a.href=arguments[0];" |
+ "a.innerHTML='.';d.body.appendChild(a);" |
+ " return a;", |
+ "https://google.com") |
+ a.click() |
+ time.sleep(1) |
+ |
+ self.websitewindow = self.driver.window_handles[-1] |
+ |
+ self.driver.switch_to_window(self.websitewindow) |
+ |
+ def AllTests(self): |
+ self.RemoveAllPasswords() |
+ self.NewWindow() |
+ for website in self.websites: |
+ website.WrongLoginTest() |
+ website.SucessfulLoginTest() |
+ website.SucessfulLoginWithAutofilledPasswordTest() |
+ |
+ self.RemoveAllPasswords() |
+ for website in self.websites: |
+ website.SucessfulLoginAfterDeletionTest() |
+ |
+ def Quit(self): |
+ self.driver.quit() |
+ |
+ |