Mam pytanie. Korzystam z Selenium Webdriver oraz pythona (Pycharm) do testowania aplikacji webowej. Wyglada tak, że mam po lewej stronie generowane menu, podzielone na trzy sekcje. Chciałbym sprawdzić ile jest tam pozycji łącznie w pierwszej sekcji. Napisałem kod:
Trójka jest jedna, czyli jak program sprawdza czy wyświetlona jest nieistniejąca pozycja zamiast przejść do except to zwyczajnie stoi. Podobnie dzieje się jak:
to wyświetlają mi się nazwy kolejnych pozycji w menu. Oczywiście analogicznie jak wcześniej - gdy program powinien podać nazwę pozycji, która nie istnieje, zatrzymuje się zamiast rzucić błędem.
(oczywiście print(a) oraz print("Except") są tylko na potrzeby sprawdzenia gdzie program utyka. Och skasowanie niczego nie zmienia.)
Jakiś pomysł co z tym dalej zrobić? Jakiś inny sposób poza try/except?
@venomik: Wrzuć kod w jakieś normalne miejsce, bo nic tu nie widac. WebDriver będzie stał, bo będzie czekał na pojawienie się elementu. Może lepiej zamiast szukać elementu, lepiej poszukać elementów, a póxniej na znalezionych elementach robić isdisplayed()?
@venomik: teraz korzystasz z findelementbyxpath, a jest jeszcze findelementsbyxpath, tylko oczywiście xpath musisz zmodyfikować tak, żeby łapał wszystkie leementy, które chcesz.
Edit: i jak wrzucasz kod, to wrzucaj ten z programu, a nie skopiowany z wykopu ;)
http://pastebin.com/ucbisATa
Dostaję wynik:
1
1
2
2
3
Trójka jest jedna, czyli jak program sprawdza czy wyświetlona jest nieistniejąca pozycja zamiast przejść do except to zwyczajnie stoi. Podobnie dzieje się jak:
driver.findelementbyxpath('//li['+str(a+1)+']/a/span').isdisplayed()
zamienię na:
driver.findelementbyxpath('//li['+str(a+1)+']/a/span')
czy
driver.findelementbyxpath('//li['+str(a+1)+']/a/span').click()
czy
test = driver.findelementbyxpath('//li['+str(a+1)+']/a/span')
Sama składnia szukająca pozycji w menu jest ok, bo jak zrobię:
for a in range(100):
print ( driver.findelementbyxpath('//li['+str(a+1)+']/a/span'))
to wyświetlają mi się nazwy kolejnych pozycji w menu. Oczywiście analogicznie jak wcześniej - gdy program powinien podać nazwę pozycji, która nie istnieje, zatrzymuje się zamiast rzucić błędem.
(oczywiście print(a) oraz print("Except") są tylko na potrzeby sprawdzenia gdzie program utyka. Och skasowanie niczego nie zmienia.)
Jakiś pomysł co z tym dalej zrobić? Jakiś inny sposób poza try/except?
#python #selenium #testowanieoprogramowania
Edit: i jak wrzucasz kod, to wrzucaj ten z programu, a nie skopiowany z wykopu ;)
fp = webdriver.FirefoxProfile()
driver =