@@ -191,7 +191,7 @@ def _start_driver(self):
191
191
def load_url (self , url ):
192
192
self .browser .get (url )
193
193
194
- def get_types (self , element_name = None , element_id = None , element_class = None , element_xpath = None ):
194
+ def get_types (self , ** kwargs ):
195
195
""" Matches the correct By. values for the given element_* param
196
196
197
197
Argument values must match 100% (no contains searching)
@@ -212,14 +212,27 @@ def get_types(self, element_name=None, element_id=None, element_class=None, elem
212
212
if self .global_wait :
213
213
self ._wait ()
214
214
215
- if element_id :
216
- return By .ID , element_id
217
- if element_name :
218
- return By .NAME , element_name
219
- if element_class :
220
- return By .CLASS_NAME , element_class
221
- if element_xpath :
222
- return By .XPATH , element_xpath
215
+ types = {
216
+ 'id' : By .ID ,
217
+ 'name' : By .NAME ,
218
+ 'class' : By .CLASS_NAME ,
219
+ 'xpath' : By .XPATH ,
220
+ }
221
+
222
+ for element_type , v in kwargs .items ():
223
+ if '_' in element_type :
224
+ _ , element_type = element_type .split ('_' , 1 )
225
+ if by_type := types .get (element_type ):
226
+ return by_type , v
227
+
228
+ if eid := kwargs .get ('element_id' ):
229
+ return By .ID , eid
230
+ if ename := kwargs .get ('element_name' ):
231
+ return By .NAME , ename
232
+ if ec := kwargs .get ('element_class' ):
233
+ return By .CLASS_NAME , ec
234
+ if ex := kwargs .get ('element_xpath' ):
235
+ return By .XPATH , ex
223
236
224
237
raise ValueError ('element id, name, class, or xpath must be supplied' )
225
238
0 commit comments