2017-10-13 126 views
0

我有一個填寫Facebook註冊的方法,並應按「創建一個帳戶」按鈕。它接縫,它創立按鈕,但由於不明原因,無法點擊按鈕,它找到按鈕,但無法點擊它

代碼:

<button type="submit" class="_6j mvm _6wk _6wl _58mi _3ma _6o _6v" name="websubmit" id="u_0_s">Create Account</button> 

,我的方法是:

def submit_new_account_form(self, **credentials): 

    firstname = self.driver.find_element_by_css_selector(self.__first_name_field_css) 
    lastname = self.driver.find_element_by_css_selector(self.__last_name_field_css) 
    number_or_email = self.driver.find_element_by_css_selector(self.__mobile_number_or_email_field_css) 
    newpass = self.driver.find_element_by_id(self.__new_password_field_id) 
    maleradio = self.driver.find_element_by_css_selector(self.__male_radio_css) 
    femaleradio = self.driver.find_element_by_css_selector(self.__female_radio_css) 
    submit_button = self.driver.find_element_by_id(self.__create_account_button_id) 


    if submit_button: 
     print ("submit button found") 

    if maleradio: 
     print("maleradio found") 
    if femaleradio: 
     print ("femaleradio found") 
    #firstname.clear() 
    if credentials['first_name']: 
     firstname.send_keys(credentials['first_name']) 

    #lastname.clear() 
    if credentials['last_name']: 
     lastname.send_keys(credentials['last_name']) 

    #number_or_email.clear() 
    if credentials['phone_or_email']: 
     number_or_email.send_keys(credentials['phone_or_email']) 
     re_enter_email_field = WebDriverWait(self.driver, 10).until(
      expected_conditions.presence_of_element_located((By.CSS_SELECTOR,self.__re_enter_new_email_field_css))) 
     re_enter_email = self.driver.find_element_by_css_selector(self.__re_enter_new_email_field_css).send_keys(
      credentials['phone_or_email']) 

    #newpass.clear() 
    if credentials['newpass']: 
     newpass.send_keys(credentials['newpass']) 

    if credentials['sex'] == 'male': 
     maleradio.click() 

    if credentials['sex'] == 'female': 
     femaleradio.click() 

    submit_button.click() 


    if submit_button.click(): 
     print('submit button clicked') 
每個I運行腳本時

提交按鈕點擊不出現,出現錯誤:

selenium.common.exceptions.ElementNotVisibleException: Message: element not visible 
+0

的按鈕不可見點擊它。你需要等到它真的出現,否則硒會升高。你確定該按鈕在頁面上始終可見嗎?或者在你填寫表格後出現? – user3012759

回答

0
<button type="submit" class="_6j mvm _6wk _6wl _58mi _3ma _6o _6v" 
name="websubmit" id="u_0_s">Create Account</button> 

從上面我可以看到id爲提交按鈕是'id ='u_0_s'。

你能否確認你是否正確傳遞了id以便提交?
如果不是,請使用'id ='u_0_s'進行更正,請嘗試讓我知道它是否有效。

此外,檢查提交按鈕是否在您的測試用例執行時可見。您可以添加代碼以最大化瀏覽器窗口。

0

您可以使用此XPath:"//button[contains(text(), 'Create an account')]",它會解決你的問題

0

我已經加入隱等待

WebDriverWait(self.driver,10).until(expected_conditions.visibility_of_element_located((By.ID, self.__create_account_button_id))) 

而在這之後一切正常好,當你試圖