Hello Everyone!
I know this might be a basic question, but I’ve been stuck on this problem. I am developing an automation framework for a mobile app on android using python appium. In the app there are a lot of similar elements that have the same ids so I have to use xpath a lot and as such I have repeated myself and created a method for each element. My code is kind of a mess and I am now looking to reduce it. I have multiple test case files that share every step except for one element like this:
el = self.driver.find_element_by_xpath("//android.widget.TextView[@text='A']")
el2 = self.driver.find_element_by_xpath("//android.widget.TextView[@text='B']")
etc for over 50 elements with the only difference being the text
my current method, which is the only step different between the test scripts, that I call from my page file to find each of the elements is:
def tapElementA(self):
for x in range(0, 20):
try:
el = self.driver.find_element_by_xpath("//android.widget.TextView[@text='A']")
el.click()
break
except NoSuchElementException:
swipe.Swipe(self)
pass
What I would like to do is create 1 script to loop and test each of the elements. Should I create a list, dictionary, or maybe a JSON file to reference each element? Does anyone have experience with something like this? I’m still new to python and coding in general but like I said, I’m just trying to clean up my code. Please let me know if my explanation is not clear and I will edit it accordingly.