summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/toaster/tests/functional/test_functional_basic.py
diff options
context:
space:
mode:
Diffstat (limited to 'bitbake/lib/toaster/tests/functional/test_functional_basic.py')
-rw-r--r--bitbake/lib/toaster/tests/functional/test_functional_basic.py120
1 files changed, 61 insertions, 59 deletions
diff --git a/bitbake/lib/toaster/tests/functional/test_functional_basic.py b/bitbake/lib/toaster/tests/functional/test_functional_basic.py
index 5683e3873e..067ad99a9c 100644
--- a/bitbake/lib/toaster/tests/functional/test_functional_basic.py
+++ b/bitbake/lib/toaster/tests/functional/test_functional_basic.py
@@ -10,6 +10,7 @@
10import re 10import re
11from tests.functional.functional_helpers import SeleniumFunctionalTestCase 11from tests.functional.functional_helpers import SeleniumFunctionalTestCase
12from orm.models import Project 12from orm.models import Project
13from selenium.webdriver.common.by import By
13 14
14class FuntionalTestBasic(SeleniumFunctionalTestCase): 15class FuntionalTestBasic(SeleniumFunctionalTestCase):
15 16
@@ -17,10 +18,10 @@ class FuntionalTestBasic(SeleniumFunctionalTestCase):
17 def test_create_slenium_project(self): 18 def test_create_slenium_project(self):
18 project_name = 'selenium-project' 19 project_name = 'selenium-project'
19 self.get('') 20 self.get('')
20 self.driver.find_element_by_link_text("To start building, create your first Toaster project").click() 21 self.driver.find_element(By.LINK_TEXT, "To start building, create your first Toaster project").click()
21 self.driver.find_element_by_id("new-project-name").send_keys(project_name) 22 self.driver.find_element(By.ID, "new-project-name").send_keys(project_name)
22 self.driver.find_element_by_id('projectversion').click() 23 self.driver.find_element(By.ID, 'projectversion').click()
23 self.driver.find_element_by_id("create-project-button").click() 24 self.driver.find_element(By.ID, "create-project-button").click()
24 element = self.wait_until_visible('#project-created-notification') 25 element = self.wait_until_visible('#project-created-notification')
25 self.assertTrue(self.element_exists('#project-created-notification'),'Project creation notification not shown') 26 self.assertTrue(self.element_exists('#project-created-notification'),'Project creation notification not shown')
26 self.assertTrue(project_name in element.text, 27 self.assertTrue(project_name in element.text,
@@ -35,77 +36,77 @@ class FuntionalTestBasic(SeleniumFunctionalTestCase):
35 self.find_element_by_link_text_in_table('projectstable', 'selenium-project').click() 36 self.find_element_by_link_text_in_table('projectstable', 'selenium-project').click()
36 self.assertTrue(self.element_exists('#config-nav'),'Configuration Tab does not exist') 37 self.assertTrue(self.element_exists('#config-nav'),'Configuration Tab does not exist')
37 project_URL=self.get_URL() 38 project_URL=self.get_URL()
38 self.driver.find_element_by_xpath('//a[@href="'+project_URL+'"]').click() 39 self.driver.find_element(By.XPATH, '//a[@href="'+project_URL+'"]').click()
39 40
40 try: 41 try:
41 self.driver.find_element_by_xpath("//*[@id='config-nav']/ul/li/a[@href="+'"'+project_URL+'customimages/"'+"]").click() 42 self.driver.find_element(By.XPATH, "//*[@id='config-nav']/ul/li/a[@href="+'"'+project_URL+'customimages/"'+"]").click()
42 self.assertTrue(re.search("Custom images",self.driver.find_element_by_xpath("//div[@class='col-md-10']").text),'Custom images information is not loading properly') 43 self.assertTrue(re.search("Custom images",self.driver.find_element(By.XPATH, "//div[@class='col-md-10']").text),'Custom images information is not loading properly')
43 except: 44 except:
44 self.fail(msg='No Custom images tab available') 45 self.fail(msg='No Custom images tab available')
45 46
46 try: 47 try:
47 self.driver.find_element_by_xpath("//*[@id='config-nav']/ul/li/a[@href="+'"'+project_URL+'images/"'+"]").click() 48 self.driver.find_element(By.XPATH, "//*[@id='config-nav']/ul/li/a[@href="+'"'+project_URL+'images/"'+"]").click()
48 self.assertTrue(re.search("Compatible image recipes",self.driver.find_element_by_xpath("//div[@class='col-md-10']").text),'The Compatible image recipes information is not loading properly') 49 self.assertTrue(re.search("Compatible image recipes",self.driver.find_element(By.XPATH, "//div[@class='col-md-10']").text),'The Compatible image recipes information is not loading properly')
49 except: 50 except:
50 self.fail(msg='No Compatible image tab available') 51 self.fail(msg='No Compatible image tab available')
51 52
52 try: 53 try:
53 self.driver.find_element_by_xpath("//*[@id='config-nav']/ul/li/a[@href="+'"'+project_URL+'softwarerecipes/"'+"]").click() 54 self.driver.find_element(By.XPATH, "//*[@id='config-nav']/ul/li/a[@href="+'"'+project_URL+'softwarerecipes/"'+"]").click()
54 self.assertTrue(re.search("Compatible software recipes",self.driver.find_element_by_xpath("//div[@class='col-md-10']").text),'The Compatible software recipe information is not loading properly') 55 self.assertTrue(re.search("Compatible software recipes",self.driver.find_element(By.XPATH, "//div[@class='col-md-10']").text),'The Compatible software recipe information is not loading properly')
55 except: 56 except:
56 self.fail(msg='No Compatible software recipe tab available') 57 self.fail(msg='No Compatible software recipe tab available')
57 58
58 try: 59 try:
59 self.driver.find_element_by_xpath("//*[@id='config-nav']/ul/li/a[@href="+'"'+project_URL+'machines/"'+"]").click() 60 self.driver.find_element(By.XPATH, "//*[@id='config-nav']/ul/li/a[@href="+'"'+project_URL+'machines/"'+"]").click()
60 self.assertTrue(re.search("Compatible machines",self.driver.find_element_by_xpath("//div[@class='col-md-10']").text),'The Compatible machine information is not loading properly') 61 self.assertTrue(re.search("Compatible machines",self.driver.find_element(By.XPATH, "//div[@class='col-md-10']").text),'The Compatible machine information is not loading properly')
61 except: 62 except:
62 self.fail(msg='No Compatible machines tab available') 63 self.fail(msg='No Compatible machines tab available')
63 64
64 try: 65 try:
65 self.driver.find_element_by_xpath("//*[@id='config-nav']/ul/li/a[@href="+'"'+project_URL+'layers/"'+"]").click() 66 self.driver.find_element(By.XPATH, "//*[@id='config-nav']/ul/li/a[@href="+'"'+project_URL+'layers/"'+"]").click()
66 self.assertTrue(re.search("Compatible layers",self.driver.find_element_by_xpath("//div[@class='col-md-10']").text),'The Compatible layer information is not loading properly') 67 self.assertTrue(re.search("Compatible layers",self.driver.find_element(By.XPATH, "//div[@class='col-md-10']").text),'The Compatible layer information is not loading properly')
67 except: 68 except:
68 self.fail(msg='No Compatible layers tab available') 69 self.fail(msg='No Compatible layers tab available')
69 70
70 try: 71 try:
71 self.driver.find_element_by_xpath("//*[@id='config-nav']/ul/li/a[@href="+'"'+project_URL+'configuration"'+"]").click() 72 self.driver.find_element(By.XPATH, "//*[@id='config-nav']/ul/li/a[@href="+'"'+project_URL+'configuration"'+"]").click()
72 self.assertTrue(re.search("Bitbake variables",self.driver.find_element_by_xpath("//div[@class='col-md-10']").text),'The Bitbake variables information is not loading properly') 73 self.assertTrue(re.search("Bitbake variables",self.driver.find_element(By.XPATH, "//div[@class='col-md-10']").text),'The Bitbake variables information is not loading properly')
73 except: 74 except:
74 self.fail(msg='No Bitbake variables tab available') 75 self.fail(msg='No Bitbake variables tab available')
75 76
76# testcase (1516) 77# testcase (1516)
77 def test_review_configuration_information(self): 78 def test_review_configuration_information(self):
78 self.get('') 79 self.get('')
79 self.driver.find_element_by_xpath("//div[@id='global-nav']/ul/li/a[@href="+'"'+'/toastergui/projects/'+'"'+"]").click() 80 self.driver.find_element(By.XPATH, "//div[@id='global-nav']/ul/li/a[@href="+'"'+'/toastergui/projects/'+'"'+"]").click()
80 self.wait_until_visible('#projectstable') 81 self.wait_until_visible('#projectstable')
81 self.find_element_by_link_text_in_table('projectstable', 'selenium-project').click() 82 self.find_element_by_link_text_in_table('projectstable', 'selenium-project').click()
82 project_URL=self.get_URL() 83 project_URL=self.get_URL()
83 84
84 try: 85 try:
85 self.assertTrue(self.element_exists('#machine-section'),'Machine section for the project configuration page does not exist') 86 self.assertTrue(self.element_exists('#machine-section'),'Machine section for the project configuration page does not exist')
86 self.assertTrue(re.search("qemux86",self.driver.find_element_by_xpath("//span[@id='project-machine-name']").text),'The machine type is not assigned') 87 self.assertTrue(re.search("qemux86",self.driver.find_element(By.XPATH, "//span[@id='project-machine-name']").text),'The machine type is not assigned')
87 self.driver.find_element_by_xpath("//span[@id='change-machine-toggle']").click() 88 self.driver.find_element(By.XPATH, "//span[@id='change-machine-toggle']").click()
88 self.wait_until_visible('#select-machine-form') 89 self.wait_until_visible('#select-machine-form')
89 self.wait_until_visible('#cancel-machine-change') 90 self.wait_until_visible('#cancel-machine-change')
90 self.driver.find_element_by_xpath("//form[@id='select-machine-form']/a[@id='cancel-machine-change']").click() 91 self.driver.find_element(By.XPATH, "//form[@id='select-machine-form']/a[@id='cancel-machine-change']").click()
91 except: 92 except:
92 self.fail(msg='The machine information is wrong in the configuration page') 93 self.fail(msg='The machine information is wrong in the configuration page')
93 94
94 try: 95 try:
95 self.driver.find_element_by_id('no-most-built') 96 self.driver.find_element(By.ID, 'no-most-built')
96 except: 97 except:
97 self.fail(msg='No Most built information in project detail page') 98 self.fail(msg='No Most built information in project detail page')
98 99
99 try: 100 try:
100 self.assertTrue(re.search("Yocto Project master",self.driver.find_element_by_xpath("//span[@id='project-release-title']").text),'The project release is not defined') 101 self.assertTrue(re.search("Yocto Project master",self.driver.find_element(By.XPATH, "//span[@id='project-release-title']").text),'The project release is not defined')
101 except: 102 except:
102 self.fail(msg='No project release title information in project detail page') 103 self.fail(msg='No project release title information in project detail page')
103 104
104 try: 105 try:
105 self.driver.find_element_by_xpath("//div[@id='layer-container']") 106 self.driver.find_element(By.XPATH, "//div[@id='layer-container']")
106 self.assertTrue(re.search("3",self.driver.find_element_by_id("project-layers-count").text),'There should be 3 layers listed in the layer count') 107 self.assertTrue(re.search("3",self.driver.find_element(By.ID, "project-layers-count").text),'There should be 3 layers listed in the layer count')
107 layer_list = self.driver.find_element_by_id("layers-in-project-list") 108 layer_list = self.driver.find_element(By.ID, "layers-in-project-list")
108 layers = layer_list.find_elements_by_tag_name("li") 109 layers = layer_list.find_elements(By.TAG_NAME, "li")
109 for layer in layers: 110 for layer in layers:
110 if re.match ("openembedded-core",layer.text): 111 if re.match ("openembedded-core",layer.text):
111 print ("openembedded-core layer is a default layer in the project configuration") 112 print ("openembedded-core layer is a default layer in the project configuration")
@@ -121,60 +122,61 @@ class FuntionalTestBasic(SeleniumFunctionalTestCase):
121# testcase (1517) 122# testcase (1517)
122 def test_verify_machine_information(self): 123 def test_verify_machine_information(self):
123 self.get('') 124 self.get('')
124 self.driver.find_element_by_xpath("//div[@id='global-nav']/ul/li/a[@href="+'"'+'/toastergui/projects/'+'"'+"]").click() 125 self.driver.find_element(By.XPATH, "//div[@id='global-nav']/ul/li/a[@href="+'"'+'/toastergui/projects/'+'"'+"]").click()
125 self.wait_until_visible('#projectstable') 126 self.wait_until_visible('#projectstable')
126 self.find_element_by_link_text_in_table('projectstable', 'selenium-project').click() 127 self.find_element_by_link_text_in_table('projectstable', 'selenium-project').click()
127 128
128 try: 129 try:
129 self.assertTrue(self.element_exists('#machine-section'),'Machine section for the project configuration page does not exist') 130 self.assertTrue(self.element_exists('#machine-section'),'Machine section for the project configuration page does not exist')
130 self.assertTrue(re.search("qemux86",self.driver.find_element_by_id("project-machine-name").text),'The machine type is not assigned') 131 self.assertTrue(re.search("qemux86",self.driver.find_element(By.ID, "project-machine-name").text),'The machine type is not assigned')
131 self.driver.find_element_by_id("change-machine-toggle").click() 132 self.driver.find_element(By.ID, "change-machine-toggle").click()
132 self.wait_until_visible('#select-machine-form') 133 self.wait_until_visible('#select-machine-form')
133 self.wait_until_visible('#cancel-machine-change') 134 self.wait_until_visible('#cancel-machine-change')
134 self.driver.find_element_by_id("cancel-machine-change").click() 135 self.driver.find_element(By.ID, "cancel-machine-change").click()
135 except: 136 except:
136 self.fail(msg='The machine information is wrong in the configuration page') 137 self.fail(msg='The machine information is wrong in the configuration page')
137 138
138# testcase (1518) 139# testcase (1518)
139 def test_verify_most_built_recipes_information(self): 140 def test_verify_most_built_recipes_information(self):
140 self.get('') 141 self.get('')
141 self.driver.find_element_by_xpath("//div[@id='global-nav']/ul/li/a[@href="+'"'+'/toastergui/projects/'+'"'+"]").click() 142 self.driver.find_element(By.XPATH, "//div[@id='global-nav']/ul/li/a[@href="+'"'+'/toastergui/projects/'+'"'+"]").click()
143
142 self.wait_until_visible('#projectstable') 144 self.wait_until_visible('#projectstable')
143 self.find_element_by_link_text_in_table('projectstable', 'selenium-project').click() 145 self.find_element_by_link_text_in_table('projectstable', 'selenium-project').click()
144 project_URL=self.get_URL() 146 project_URL=self.get_URL()
145 147
146 try: 148 try:
147 self.assertTrue(re.search("You haven't built any recipes yet",self.driver.find_element_by_id("no-most-built").text),'Default message of no builds is not present') 149 self.assertTrue(re.search("You haven't built any recipes yet",self.driver.find_element(By.ID, "no-most-built").text),'Default message of no builds is not present')
148 self.driver.find_element_by_xpath("//div[@id='no-most-built']/p/a[@href="+'"'+project_URL+'images/"'+"]").click() 150 self.driver.find_element(By.XPATH, "//div[@id='no-most-built']/p/a[@href="+'"'+project_URL+'images/"'+"]").click()
149 self.assertTrue(re.search("Compatible image recipes",self.driver.find_element_by_xpath("//div[@class='col-md-10']").text),'The Choose a recipe to build link is not working properly') 151 self.assertTrue(re.search("Compatible image recipes",self.driver.find_element(By.XPATH, "//div[@class='col-md-10']").text),'The Choose a recipe to build link is not working properly')
150 except: 152 except:
151 self.fail(msg='No Most built information in project detail page') 153 self.fail(msg='No Most built information in project detail page')
152 154
153# testcase (1519) 155# testcase (1519)
154 def test_verify_project_release_information(self): 156 def test_verify_project_release_information(self):
155 self.get('') 157 self.get('')
156 self.driver.find_element_by_xpath("//div[@id='global-nav']/ul/li/a[@href="+'"'+'/toastergui/projects/'+'"'+"]").click() 158 self.driver.find_element(By.XPATH, "//div[@id='global-nav']/ul/li/a[@href="+'"'+'/toastergui/projects/'+'"'+"]").click()
157 self.wait_until_visible('#projectstable') 159 self.wait_until_visible('#projectstable')
158 self.find_element_by_link_text_in_table('projectstable', 'selenium-project').click() 160 self.find_element_by_link_text_in_table('projectstable', 'selenium-project').click()
159 161
160 try: 162 try:
161 self.assertTrue(re.search("Yocto Project master",self.driver.find_element_by_id("project-release-title").text),'The project release is not defined') 163 self.assertTrue(re.search("Yocto Project master",self.driver.find_element(By.ID, "project-release-title").text),'The project release is not defined')
162 except: 164 except:
163 self.fail(msg='No project release title information in project detail page') 165 self.fail(msg='No project release title information in project detail page')
164 166
165# testcase (1520) 167# testcase (1520)
166 def test_verify_layer_information(self): 168 def test_verify_layer_information(self):
167 self.get('') 169 self.get('')
168 self.driver.find_element_by_xpath("//div[@id='global-nav']/ul/li/a[@href="+'"'+'/toastergui/projects/'+'"'+"]").click() 170 self.driver.find_element(By.XPATH, "//div[@id='global-nav']/ul/li/a[@href="+'"'+'/toastergui/projects/'+'"'+"]").click()
169 self.wait_until_visible('#projectstable') 171 self.wait_until_visible('#projectstable')
170 self.find_element_by_link_text_in_table('projectstable', 'selenium-project').click() 172 self.find_element_by_link_text_in_table('projectstable', 'selenium-project').click()
171 project_URL=self.get_URL() 173 project_URL=self.get_URL()
172 174
173 try: 175 try:
174 self.driver.find_element_by_xpath("//div[@id='layer-container']") 176 self.driver.find_element(By.XPATH, "//div[@id='layer-container']")
175 self.assertTrue(re.search("3",self.driver.find_element_by_id("project-layers-count").text),'There should be 3 layers listed in the layer count') 177 self.assertTrue(re.search("3",self.driver.find_element(By.ID, "project-layers-count").text),'There should be 3 layers listed in the layer count')
176 layer_list = self.driver.find_element_by_id("layers-in-project-list") 178 layer_list = self.driver.find_element(By.ID, "layers-in-project-list")
177 layers = layer_list.find_elements_by_tag_name("li") 179 layers = layer_list.find_element(By.TAG_NAME, "li")
178 180
179 for layer in layers: 181 for layer in layers:
180 if re.match ("openembedded-core",layer.text): 182 if re.match ("openembedded-core",layer.text):
@@ -186,43 +188,43 @@ class FuntionalTestBasic(SeleniumFunctionalTestCase):
186 else: 188 else:
187 self.fail(msg='default layers are missing from the project configuration') 189 self.fail(msg='default layers are missing from the project configuration')
188 190
189 self.driver.find_element_by_xpath("//input[@id='layer-add-input']") 191 self.driver.find_element(By.XPATH, "//input[@id='layer-add-input']")
190 self.driver.find_element_by_xpath("//button[@id='add-layer-btn']") 192 self.driver.find_element(By.XPATH, "//button[@id='add-layer-btn']")
191 self.driver.find_element_by_xpath("//div[@id='layer-container']/form[@class='form-inline']/p/a[@id='view-compatible-layers']") 193 self.driver.find_element(By.XPATH, "//div[@id='layer-container']/form[@class='form-inline']/p/a[@id='view-compatible-layers']")
192 self.driver.find_element_by_xpath("//div[@id='layer-container']/form[@class='form-inline']/p/a[@href="+'"'+project_URL+'importlayer"'+"]") 194 self.driver.find_element(By.XPATH, "//div[@id='layer-container']/form[@class='form-inline']/p/a[@href="+'"'+project_URL+'importlayer"'+"]")
193 except: 195 except:
194 self.fail(msg='No Layer information in project detail page') 196 self.fail(msg='No Layer information in project detail page')
195 197
196# testcase (1521) 198# testcase (1521)
197 def test_verify_project_detail_links(self): 199 def test_verify_project_detail_links(self):
198 self.get('') 200 self.get('')
199 self.driver.find_element_by_xpath("//div[@id='global-nav']/ul/li/a[@href="+'"'+'/toastergui/projects/'+'"'+"]").click() 201 self.driver.find_element(By.XPATH, "//div[@id='global-nav']/ul/li/a[@href="+'"'+'/toastergui/projects/'+'"'+"]").click()
200 self.wait_until_visible('#projectstable') 202 self.wait_until_visible('#projectstable')
201 self.find_element_by_link_text_in_table('projectstable', 'selenium-project').click() 203 self.find_element_by_link_text_in_table('projectstable', 'selenium-project').click()
202 project_URL=self.get_URL() 204 project_URL=self.get_URL()
203 205
204 self.driver.find_element_by_xpath("//div[@id='project-topbar']/ul[@class='nav nav-tabs']/li[@id='topbar-configuration-tab']/a[@href="+'"'+project_URL+'"'+"]").click() 206 self.driver.find_element(By.XPATH, "//div[@id='project-topbar']/ul[@class='nav nav-tabs']/li[@id='topbar-configuration-tab']/a[@href="+'"'+project_URL+'"'+"]").click()
205 self.assertTrue(re.search("Configuration",self.driver.find_element_by_xpath("//div[@id='project-topbar']/ul[@class='nav nav-tabs']/li[@id='topbar-configuration-tab']/a[@href="+'"'+project_URL+'"'+"]").text), 'Configuration tab in project topbar is misspelled') 207 self.assertTrue(re.search("Configuration",self.driver.find_element(By.XPATH, "//div[@id='project-topbar']/ul[@class='nav nav-tabs']/li[@id='topbar-configuration-tab']/a[@href="+'"'+project_URL+'"'+"]").text), 'Configuration tab in project topbar is misspelled')
206 208
207 try: 209 try:
208 self.driver.find_element_by_xpath("//div[@id='project-topbar']/ul[@class='nav nav-tabs']/li/a[@href="+'"'+project_URL+'builds/"'+"]").click() 210 self.driver.find_element(By.XPATH, "//div[@id='project-topbar']/ul[@class='nav nav-tabs']/li/a[@href="+'"'+project_URL+'builds/"'+"]").click()
209 self.assertTrue(re.search("Builds",self.driver.find_element_by_xpath("//div[@id='project-topbar']/ul[@class='nav nav-tabs']/li/a[@href="+'"'+project_URL+'builds/"'+"]").text), 'Builds tab in project topbar is misspelled') 211 self.assertTrue(re.search("Builds",self.driver.find_element(By.XPATH, "//div[@id='project-topbar']/ul[@class='nav nav-tabs']/li/a[@href="+'"'+project_URL+'builds/"'+"]").text), 'Builds tab in project topbar is misspelled')
210 self.driver.find_element_by_xpath("//div[@id='empty-state-projectbuildstable']") 212 self.driver.find_element(By.XPATH, "//div[@id='empty-state-projectbuildstable']")
211 except: 213 except:
212 self.fail(msg='Builds tab information is not present') 214 self.fail(msg='Builds tab information is not present')
213 215
214 try: 216 try:
215 self.driver.find_element_by_xpath("//div[@id='project-topbar']/ul[@class='nav nav-tabs']/li/a[@href="+'"'+project_URL+'importlayer"'+"]").click() 217 self.driver.find_element(By.XPATH, "//div[@id='project-topbar']/ul[@class='nav nav-tabs']/li/a[@href="+'"'+project_URL+'importlayer"'+"]").click()
216 self.assertTrue(re.search("Import layer",self.driver.find_element_by_xpath("//div[@id='project-topbar']/ul[@class='nav nav-tabs']/li/a[@href="+'"'+project_URL+'importlayer"'+"]").text), 'Import layer tab in project topbar is misspelled') 218 self.assertTrue(re.search("Import layer",self.driver.find_element(By.XPATH, "//div[@id='project-topbar']/ul[@class='nav nav-tabs']/li/a[@href="+'"'+project_URL+'importlayer"'+"]").text), 'Import layer tab in project topbar is misspelled')
217 self.driver.find_element_by_xpath("//fieldset[@id='repo-select']") 219 self.driver.find_element(By.XPATH, "//fieldset[@id='repo-select']")
218 self.driver.find_element_by_xpath("//fieldset[@id='git-repo']") 220 self.driver.find_element(By.XPATH, "//fieldset[@id='git-repo']")
219 except: 221 except:
220 self.fail(msg='Import layer tab not loading properly') 222 self.fail(msg='Import layer tab not loading properly')
221 223
222 try: 224 try:
223 self.driver.find_element_by_xpath("//div[@id='project-topbar']/ul[@class='nav nav-tabs']/li/a[@href="+'"'+project_URL+'newcustomimage/"'+"]").click() 225 self.driver.find_element(By.XPATH, "//div[@id='project-topbar']/ul[@class='nav nav-tabs']/li/a[@href="+'"'+project_URL+'newcustomimage/"'+"]").click()
224 self.assertTrue(re.search("New custom image",self.driver.find_element_by_xpath("//div[@id='project-topbar']/ul[@class='nav nav-tabs']/li/a[@href="+'"'+project_URL+'newcustomimage/"'+"]").text), 'New custom image tab in project topbar is misspelled') 226 self.assertTrue(re.search("New custom image",self.driver.find_element(By.XPATH, "//div[@id='project-topbar']/ul[@class='nav nav-tabs']/li/a[@href="+'"'+project_URL+'newcustomimage/"'+"]").text), 'New custom image tab in project topbar is misspelled')
225 self.assertTrue(re.search("Select the image recipe you want to customise",self.driver.find_element_by_xpath("//div[@class='col-md-12']/h2").text),'The new custom image tab is not loading correctly') 227 self.assertTrue(re.search("Select the image recipe you want to customise",self.driver.find_element(By.XPATH, "//div[@class='col-md-12']/h2").text),'The new custom image tab is not loading correctly')
226 except: 228 except:
227 self.fail(msg='New custom image tab not loading properly') 229 self.fail(msg='New custom image tab not loading properly')
228 230