Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(74)

Side by Side Diff: components/test/data/password_manager/environment.py

Issue 273523004: Password Manager testing automation (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: cmd Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 import time
2 from selenium import webdriver
3 from selenium.webdriver.chrome.options import Options
4 import xml.etree.ElementTree as ET
vabr (Chromium) 2014/05/08 13:53:45 Please don't use ET, use the original name, to inc
rchtara 2014/05/14 11:58:04 Done.
5
6 from website import Website
7
8
9 class Environment:
10
11 def __init__(self, passwords_file = ""):
vabr (Chromium) 2014/05/08 13:53:45 No spaces around "=" when defining default values.
rchtara 2014/05/14 11:58:04 Done.
12 options = Options()
13 """Use random empty folder for profile, otherwise chromedriver is going to
14 create it's own where saving passwords is disabled.
15 """
16 options.add_argument("enable-automatic-password-saving")
vabr (Chromium) 2014/05/08 13:53:45 Please comment on why this is needed. (I still kno
rchtara 2014/05/14 11:58:04 Done.
17 #chrome path
vabr (Chromium) 2014/05/08 13:53:45 Please separate # and the first word with a space.
rchtara 2014/05/14 11:58:04 Done.
18 options.binary_location = (
19 "/usr/local/google/home/rchtara/chrome/src/out/Debug/chrome")
vabr (Chromium) 2014/05/08 13:53:45 Please do not hard-code your local path into the u
rchtara 2014/05/14 11:58:04 Done.
20 #new profile path
21 options.add_argument("user-data-dir=/tmp/ChromePasswordManagerTestvvvvvv")
22 #chromedriver path
23 self.driver = webdriver.Chrome(
24 "/usr/local/google/home/rchtara/chrome/src/out/Debug/chromedriver", 0,
25 options)
26 self.internals_window = self.driver.current_window_handle
27 self.websitewindow = None
28 self.websites = []
29
30 self.passwords_tree = None
vabr (Chromium) 2014/05/08 13:53:45 Please comment on what is the |passwords_tree|.
rchtara 2014/05/14 11:58:04 Done.
31 if passwords_file != "":
32 self.passwords_tree = ET.parse(passwords_file).getroot()
33
34 def AddWebsite(self,
vabr (Chromium) 2014/05/08 13:53:45 Please add a docstring documenting this method, an
35 name,
36 username = None,
37 password = None,
38 username_not_auto=False):
39 website = (
40 Website(
41 name, username, password, self.driver, self, username_not_auto))
42 self.websites.append(website)
43 return website
44
45 def RemoveAllPasswords(self, websites):
46 print "RemoveAllPasswords"
47 self.driver.get("chrome://settings/passwords")
48 self.driver.switch_to_frame("settings")
49
50 for website in websites:
51 urls, _ = self.GetPasswordsAndButtons()
52 website.RemoveAllPasswords(urls)
53
54 def GetPasswordsAndButtons(self):
55 arr = self.driver.find_elements_by_css_selector(
56 "#saved-passwords-list .deletable-item")
57 urls = []
58 remove_buttons = []
59 for entry in arr:
60 urls.append(entry.find_element_by_class_name("url").text)
61 remove_buttons.append(
62 entry.find_element_by_class_name("row-delete-button"))
63 return (urls, remove_buttons)
vabr (Chromium) 2014/05/08 13:53:45 Why do you bother with returning buttons, when you
rchtara 2014/05/14 11:58:04 Done.
64
65 def NewWindow(self):
66 if self.websitewindow == None:
67 self.driver.get("https://google.com")
68
69 """It's not possible to open a new tab to chrome:// urls directly,
vabr (Chromium) 2014/05/08 13:53:45 Sorry, this sentence is hard to parse, and I actua
rchtara 2014/05/14 11:58:04 There is two issues here: *There is no straightfor
70 this why we go to google.com website then we go to chrome://
71 sometime chromedriver doesn't detect that www.google.com is loaded
72 and the script just stops, this is why you should redo the
73 tests again.
74 """
75
76 a = self.driver.execute_script(
77 "var d=document; var "
78 "a=d.createElement('a');a.target='_blank';a.href=arguments[0];"
79 "a.innerHTML='.';d.body.appendChild(a);"
80 " return a;",
81 "https://google.com")
82 a.click()
83 time.sleep(1)
84
85 self.websitewindow = self.driver.window_handles[-1]
86
87 self.driver.switch_to_window(self.websitewindow)
88
89 def TestList(self, websites):
90 self.RemoveAllPasswords(websites)
91 self.NewWindow()
92 for website in websites:
93 website.WrongLoginTest()
94 website.SuccessfulLoginTest()
95 website.SuccessfulLoginWithAutofilledPasswordTest()
96
97 self.RemoveAllPasswords(websites)
98 for website in websites:
99 website.SuccessfulLoginAfterDeletionTest()
100
101 def AllTests(self):
102 self.TestList(self.websites)
103
104 def Test(self, tests):
105 websites = []
106 for website in self.websites:
107 for test in tests:
vabr (Chromium) 2014/05/08 13:53:45 Use rather: if website.name in tests: websites.a
rchtara 2014/05/14 11:58:04 Done.
108 if website.name == test:
109 websites.append(website)
110 self.TestList(websites)
111
112 def Quit(self):
113 self.driver.quit()
114
115
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698