2017-02-14 27 views
0

當我註冊一個用戶時,它顯示在最後一頁的表格中(目前我有4頁註冊用戶),所以我需要轉到最後一頁並點擊用戶創建點擊表格中的特定文字

我的代碼:

定位器使用

class FeeScheduleLocators(object): 

    ADD_BUTTON = (By.ID, "save") 
    NAME = (By.ID, "id_name") 
    SAVE_BUTTON = (By.CSS_SELECTOR, "input[type='submit']") 
    FEE_SCHEDULE_LIST = (By.TAG_NAME, "td") 
    NEXT_LINK = (By.LINK_TEXT, "Next") 

方法使用

def create_fee_schedule(self): 

    self.name = fake.name() 

    self.find_element(FeeScheduleLocators.NAME).send_keys(self.name) 

    self.find_element(FeeScheduleLocators.SAVE_BUTTON).click() 
    WebDriverWait(self.driver, AUTOCOMPLETE_TIMEOUT).until(
     EC.text_to_be_present_in_element((By.CLASS_NAME, "success"), 'Fee added sucessfully')) 

    self.fee_list = self.find_elements(FeeScheduleLocators.FEE_SCHEDULE_LIST) 

    for self.each_register in self.fee_list: 

     while self.each_register.text != self.name: 

      self.find_element(FeeScheduleLocators.NEXT_LINK).click() 
      time.sleep(2) 

     else: 

      each_register.click() 

我運行後的問題

測試點擊只是到第二頁,並顯示下面的錯誤:

E StaleElementReferenceException: Message: stale element reference: element is not attached to the page document 
E  (Session info: chrome=56.0.2924.87) 
E  (Driver info: chromedriver=2.27.440174 (e97a722caafc2d3a8b807ee115bfb307f7d2cfd9),platform=Mac OS X 10.12.3 x86_64) 

預期的行爲:

轉到最後一頁並單擊最近創建的用戶的名稱

+0

你能發佈一個鏈接到頁面嗎?另外,請解釋你用這段代碼試圖完成的事情。我很難理解這個意圖。點擊所需的TD應該做什麼?你能不能直接搜索所需的TD而不是循環訪問列表?點擊下一個鏈接是做什麼的?更改頁面或? – JeffC

+0

@JeffC我編輯了描述,看看你是否理解代碼。否則,請告訴我。非常感謝。不幸的是該頁面是本地的 – RFtests

回答

0

從您的描述中,所需的名稱應始終位於最後一頁。您的代碼在您到達最後一頁之前正在查找所需的名稱。

而不是使用for循環和while-else,使用while循環來點擊下一個鏈接,只要它存在。一旦它不再存在,就知道你已經在最後一頁。然後點擊姓氏或直接找到所需的元素並點擊它。您應該能夠製作一個定位器來查找所需的確切元素,但您需要提供相關的HTML。