2017-08-08 124 views
0
import time 
from selenium import webdriver 
from selenium.webdriver.common.by import By 
from commonPages.LoginPage import LoginPage 
from util.InitialSetUp import InitSetup 
i = InitSetup() 
chrome_options = i.close_popup() 
driver = webdriver.Chrome(chrome_options=chrome_options) 
log = LoginPage(driver) 
log.nav_login_page() 
class Test_User_Profile: 
def test_required_fields_are_not_empty(self): 
    time.sleep(2) 
    profile_link = driver.find_element(By.CLASS_NAME, 'user-dropdown-button') 
    profile_link.click() 

    user_profile_link = driver.find_element(By.CLASS_NAME, 'user-profile-menu-item') 
    user_profile_link.click() 

    all_fields = driver.find_elements(By.TAG_NAME, 'input') 
    for field in all_fields: 
     value_of_field = field.get_attribute('value') 
     if value_of_field not in '[object Object],[object Object],[object Object]': 
      # print(value_of_field) 
      length = len(value_of_field) 
      # Assert all required fields are filled out 
      assert length > 0 

def test_required_fields_are_displayed(self): 
    all_fields_labels = driver.find_elements(By.CLASS_NAME, '_2H4nTeLi38d1fmjX5_VWUV') 
    empty = [] 
    for field_labels in all_fields_labels: 
     value_of_field = field_labels.text 
     if value_of_field not in '[object Object],[object Object],[object Object]': 
      # print(value_of_field) 
      length = len(value_of_field) 
      # Assert all required fields are displayed 
      assert length > 0 
      empty.append(value_of_field) 
      # print(empty) 
    assert empty == ['name', 'job title', 'email', 'phone', 'location'] 

# # Close modal 
# close_btn = driver.find_element(By.CLASS_NAME, 'close-profile-button') 
# close_btn.click() 

# # Close browser 
# driver.close() 

上述代碼有時無法運行,有時會通過。如果這是正確的,我不明白嗎?硒Python:這段代碼是否正確?

當它失敗,給出錯誤信息:

selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"class name","selector":"close-profile-button"} 
(Session info: chrome=59.0.3071.115) 
(Driver info: chromedriver=2.29.461591(62ebf098771772160f391d75e589dc567915b233),platform=Windows NT 6.1.7601 SP1 x86_64) 

即使定位器「關閉型材式按鈕」出現在網頁上。

回答

0

該網頁probalby還沒有完全加載,所以你需要等待點擊按鈕。

from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC 
from selenium.webdriver.common.by import By 


wait = WebDriverWait(driver,60) 
wait.until(EC.visibility_of_element_located((By.CLASS_NAME, 'close-profile-button'))) 

close_btn = driver.find_element(By.CLASS_NAME, 'close-profile-button') 
close_btn.click() 
+0

這不起作用,給出一個錯誤消息,*等* –

+0

它只是不正確的格式?我確實忘了一些東西,比如括號。關於更新。什麼是錯誤信息? – DJK

+0

'Test_User_Profile.py:52:in Test_User_Profile element = wait.until(EC.visibility_of_element_located(By.CLASS_NAME,'close-profile-button')) TypeError:__init __()需要2個位置參數,但有3個被給出了' –