2017-05-04 7 views
-1

セレンウェブテストに関する質問が1つ出てきます。すべての要素がセレンのwebdriverのアクションになるためには、独自のxpathまたはcssセレクターが必要です。 私はPythonの列挙型を使用してEnumを使用してセレンテストのロケータを構築する

file: elementEnum.py 
from enum import Enum 

class PageA(Enum): 
    pElementA = '//div[{}]' 
    pElementB = '//a[.="{}"]' 
    pElementC = '//div[@class={}]' 

class PageB(Enum): 
    pElementA = '//button[.="{}""]' 
    pElementB = '//table/tr[{}]/td[{}]' 

のようなものを作成しようとしましたが、それは、私はPythonのフォーマット機能で文字列を構築するために必要とし、それはpythonoicを見ていない多くの時間が判明。

from elementEnum import * 
driver.find_element_by_xpath('//div[@class="aaaaaa"]/{}'.format((PageA.pElementA.value).format(1))) 
driver.find_element_by_xpath('{}/{}'.format(PageA.pElementA.value).format(1), PageA.pElementB.value.format(2))) 
driver.find_element_by_xpath('{}/{}'.format(PageB.pElementB.value).format(1, 3), PageA.pElementA.value.format(2))) 

私はすべてのcorresponse要素とそのロケータを一覧表示するための最良の方法は何ですか。

答えて

1

あなたは要素に

http://selenium-python.readthedocs.io/waits.html

サンプルコード検索に

EC.visibility_of_element_locatedを使用することができます。

class SeleniumBaseClass(object): 
    def __init__(self,driver): 
     self.driver = driver 
    def open(self,URL): 
     self.driver.get(URL) 
    def driverURLChange(self,URL): 
     print("change URL" + URL) 
     self.driver.get(URL) 
    def currentUrl(self): 
     print("URL " + self.driver.current_url) 
     return self.driver.current_url 
    def switchNewWindow(self): 
     self.driver.switch_to_window(self.driver.window_handles[1]) 
     return self.driver.title 
    def locateElement(self, loc): 
     try: 
      print(loc) 
      element = WebDriverWait(self.driver,10).until(EC.visibility_of_element_located(loc)) 
      return element 
     except: 
      print ("cannot find {0} element".format(loc)) 
     return None 

を、あなたでし

password_loc =(By.NAME,'password') 
webdriver = SeleniumBaseClass(driver) 
webdriver.locateElement(password_loc) 

これはタプルを渡して要素を見つけることができます

関連する問題