2016-11-04 116 views
1

我是python新手,使用python和selenium自動化測試web2py應用程序。在表單中我有一個選擇選項。我無法選擇該值。我嘗試了不同的方式。選擇不使用蟒蛇和硒進行選擇的類型

代碼測試

from selenium import webdriver 
import unittest, time 
import xlrd 

from openpyxl import load_workbook 
from itertools import * 
from selenium.webdriver.support.ui import Select 
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions 
from selenium.common.exceptions import TimeoutException 
from selenium.webdriver.common.keys import Keys 
from openpyxl import Workbook 
from itertools import izip_longest as zip_longest 


import os 


class LoginTest(unittest.TestCase): 

    def setUp(self): 
     self.driver=webdriver.Firefox() 
     self.driver.get("http://127.0.0.1:8000/ClinicalManagement/user/login?_next=/ClinicalManagement/admin") 
     self.LoginXpath = "//input[@value='Log In']"  

      self.emailFieldID = "auth_user_email" 
      self.passFieldID = "auth_user_password" 
      self.InboxXpath = "id(':4b')/x:div/x:div[1]/x:span/x:a" 





    def test_Basic(self): 
     driver = self.driver 
     wb=xlrd.open_workbook("cms_testcase.xlsx") 
     sheetname = wb.sheet_names() 
     sh1 = wb.sheet_by_index(0) 


     rows = ['[email protected]'] 
     col = ['12345678'] 

     driver.find_element_by_id(self.emailFieldID).send_keys(rows[0]) 

     print("The user name is entered")  


     driver.find_element_by_id(self.passFieldID).send_keys(col[0]) 
     print("The Password is entered") 

     time.sleep(1) 

     driver.find_element_by_xpath(self.LoginXpath).click() 
      #driver.implicitly_wait(50) 
     time.sleep(1) 
     driver.find_element_by_id('patient').click() 
     time.sleep(1) 
     driver.find_element_by_partial_link_text('Add').click() 
     driver.find_element_by_id('patient_name').send_keys('Manasa') 
     driver.find_element_by_id('patient_email').send_keys('[email protected]') 
     driver.find_element_by_id('patient_phone').send_keys('9856254578') 
     driver.find_element_by_id('patient_address').send_keys('Near gmail.com') 
     driver.find_element_by_id('patient_gender'). select_by_visible_text('Male') 





    #def tearDown(self): 
    # self.driver.quit() 

    # try: 
     # driver.find_element_by_id(self.emailFieldID).send_keys(self.gmailUserName) 

     # self.write_test_case_result('PASS', 'A1') 
     # print('Find Username: PASS') 
    # except: 
     # self.write_test_case_result('FAIL', 'A1') 
     # print('Find Username: FAIL') 
    #   try: 
     # driver.find_element_by_id(self.passFieldID).send_keys(self.gmailPassword) 
     # self.write_test_case_result('PASS', 'A2') 
     # print('Find Password: PASS') 
    # except: 
     # self.write_test_case_result('FAIL', 'A2') 
     # print('Find Password: FAIL') 


    # try: 
     # driver.find_element_by_xpath(self.LoginXpath).click() 

     # self.write_test_case_result('PASS', 'A3') 
     # print('Find login button: PASS') 
    # except: 
     # self.write_test_case_result('FAIL', 'A3') 
     # print('Find login button: FAIL') 


    # def write_test_case_result(self, result, location): 
    #  wb = Workbook() 
    #  ws1 = wb.worksheets[0] 
    #  ws1.title = 'Test result' 
    #  dest_filename = 'Test_Result.xlsx' 

    #  while True: 
    # if result == "PASS": 
    #  ws1.cell(location).value = "PASSED" 
    #  break 
    # else: 
    #  ws1.cell(location).value = "FAILED" 
    #  break 
    # break 
    #  # Save the file 
    #  wb.save(filename = dest_filename) 






if __name__ == "__main__": 
    unittest.main() 

當我使用 「driver.find_element_by_id( 'patient_gender')select_by_visible_text( '男')」 沒有一個字段的形式得到場:

With driver.find_element_by_id for select Gender

當我刪除該行的形式被填充的值,但停止在那裏

without driver.find_element_by_id for select

我曾嘗試使用XPath還和find_element_by_value和find_element_by_visible_text和這樣的 - Select(driver.find_element_by_xpath("//select[@name='name']")).select_by_visible_text(" ")

我爲我的長而枯燥的描述非常抱歉,但可以找到一個更好的辦法。

+0

顯示'HTML'爲'Gender'下拉 – Andersson

回答

1

你可以嘗試使用下面的語法來選擇:

WebDriverWait(driver, 10).until(EC.visibility_of_element_located(By.ID("id"))) 
    select = Select(self.driver.find_element_by_id("id")) 
    select.select_by_visible_text('Male') 
+0

此代碼沒有工作,但給出一些見解。謝謝。 –

1

這是爲我工作

from selenium import webdriver 
import unittest, time 
import xlrd 

from openpyxl import load_workbook 
from itertools import * 
from selenium.webdriver.support.ui import Select 
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions 
from selenium.common.exceptions import TimeoutException 
from selenium.webdriver.common.keys import Keys 
from openpyxl import Workbook 
from itertools import izip_longest as zip_longest 
from selenium.webdriver.support.ui import Select 



import os 


class LoginTest(unittest.TestCase): 

    def setUp(self): 
     self.driver=webdriver.Firefox() 
     self.driver.get("http://127.0.0.1:8000/ClinicalManagement/user/login?_next=/ClinicalManagement/admin") 
     self.LoginXpath = "//input[@value='Log In']"  

      self.emailFieldID = "auth_user_email" 
      self.passFieldID = "auth_user_password" 
      self.InboxXpath = "id(':4b')/x:div/x:div[1]/x:span/x:a" 
     self.w2p = "//input[@value='w2p_keywords']" 

     self.patient_name="//input[@id='patient_name']" 
     self.patient_email="//input[@id='patient_email']" 
     self.patient_phone="//input[@id='patient_phone']" 
     self.patient_address="//input[@id='patient_address']" 
     self.patient_gender="//select[@id='patient_gender']" 
     self.patient_dob="//input[@id='patient_dob']" 


    def test_Basic(self): 
     driver = self.driver 
     wb=xlrd.open_workbook("cms_testcase.xlsx") 
     sheetname = wb.sheet_names() 
     sh1 = wb.sheet_by_index(0) 


     rows = ['[email protected]'] 
     col = ['1234678'] 

     driver.find_element_by_id(self.emailFieldID).send_keys(rows[0]) 

     print("The user name is entered")   


     driver.find_element_by_id(self.passFieldID).send_keys(col[0]) 
     print("The Password is entered") 

     time.sleep(1) 

     driver.find_element_by_xpath(self.LoginXpath).click() 
      #driver.implicitly_wait(50) 
     time.sleep(1) 
     driver.find_element_by_id('patient').click() 
     time.sleep(1) 
     driver.find_element_by_partial_link_text('Add').click() 
     driver.find_element_by_id('patient_name').send_keys('Manasa') 
     driver.find_element_by_id('patient_email').send_keys('[email protected]') 
     driver.find_element_by_id('patient_phone').send_keys('9856254578') 
     driver.find_element_by_id('patient_address').send_keys('Near gmail.com') 

     WebDriverWait(driver,10).until(lambda driver: driver.find_element_by_id('patient_gender')) 
      print(driver.title) 



     select = Select(driver.find_element_by_id("patient_gender")) 
     select.select_by_visible_text('Male') 

     driver.find_element_by_id('patient_dob').send_keys('2/2/2016') 

     WebDriverWait(driver,10).until(lambda driver: driver.find_element_by_id('patient_gender')) 
      print(driver.title) 

     select = Select(driver.find_element_by_id("patient_blood_group")) 
     select.select_by_visible_text('O+') 








    #def tearDown(self): 
    # self.driver.quit() 

    # try: 
     # driver.find_element_by_id(self.emailFieldID).send_keys(self.gmailUserName) 

     # self.write_test_case_result('PASS', 'A1') 
     # print('Find Username: PASS') 
    # except: 
     # self.write_test_case_result('FAIL', 'A1') 
     # print('Find Username: FAIL') 
    #   try: 
     # driver.find_element_by_id(self.passFieldID).send_keys(self.gmailPassword)  
     # self.write_test_case_result('PASS', 'A2') 
     # print('Find Password: PASS') 
    # except: 
     # self.write_test_case_result('FAIL', 'A2') 
     # print('Find Password: FAIL') 


    # try: 
     # driver.find_element_by_xpath(self.LoginXpath).click() 

     # self.write_test_case_result('PASS', 'A3') 
     # print('Find login button: PASS') 
    # except: 
     # self.write_test_case_result('FAIL', 'A3') 
     # print('Find login button: FAIL') 


    # def write_test_case_result(self, result, location): 
    #  wb = Workbook() 
    #  ws1 = wb.worksheets[0] 
    #  ws1.title = 'Test result' 
    #  dest_filename = 'Test_Result.xlsx' 

    #  while True: 
    #  if result == "PASS": 
    #   ws1.cell(location).value = "PASSED" 
    #   break 
    #  else: 
    #   ws1.cell(location).value = "FAILED" 
    #   break 
    #  break 
    #  # Save the file 
    #  wb.save(filename = dest_filename)  






if __name__ == "__main__": 
    unittest.main()