Error แจ้งว่า ไม่มีแอตทริบิวต์ 'openwed_Login'
ต้องทำยังไงโค้ดถึง จะสามารถรู้จัก ฟังก์ชัน 'openwed_Login' ครับ
Code Error
โค้ด: เลือกทั้งหมด
Traceback (most recent call last):
File "D:/Python selenium_mt27/test_11.py", line 628, in <module>
runner.run(MooZiiCart_check.categories_check_Add)
File "C:\Users\ter\AppData\Local\Programs\Python\Python36\lib\unittest\runner.py", line 176, in run
test(result)
File "D:/Python selenium_mt27/test_11.py", line 544, in categories_check_Add
self.openwed_Login(pw1,self.base_url,self.username,self.pwd)
AttributeError: 'TextTestResult' object has no attribute 'openwed_Login'
โค้ด: เลือกทั้งหมด
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.by import By
from selenium.webdriver.firefox.webdriver import WebDriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as ec
from selenium.webdriver.support.select import Select
import time, base64, re, requests ,unittest,os
user = 'mt27'
password = 'mt27007'
user1 = "ธวัชชัย แสนหาญ"
password1 = "0929462162"
user2 ='mt77'
password2 ='87654321'
path = r'E:\geckodriver-v0.23.0-win64\geckodriver.exe'
wed0 = "http://mzc.buildinstore.com/administrator/index.php"
wed1 = "http://mzc.buildinstore.com/index.php/en/"
wed_mindphp = "https://www.mindphp.com/forums/viewforum.php?f=342" #https://www.mindphp.com/forums/posting.php?mode=post&f=342
firefoxpath = "/home/com015/geckodriver"
Toggle = "//a[contains(.,'Toggle editor')]"
new = '.button-new'
save = '.button-apply'
save_close ='.button-save'
Cancel ='.button-cancel'
Public ='.button-publish'
Unpublic ='.button-unpublish'
delete ='#toolbar-delete > button.btn.btn-small'
Detail ='Details'
pw1 ='passwd'
pw2 ='password'
'categories'
CategoryTitle = 'Book'
CategoryTitle1 = 'Book'
Alias ='book'
Short_description = 'book'
Description = 'book'
Access ='Public'
Category_sorting ='First'
Amount_of_products_on_page ='10'
Amount_of_products_in_row ='5'
Parent_category ='Top level'
categoriesfile_edit ='book'
'Product'
ProductTitle = 'One Piece'
ProductTitle1 = 'One Piece2'
ProductAlias = 'One Piece'
ProductShort_description = 'One Piece'
ProductDescription = 'One Piece'
access = 'Public'
price = '30'
currency = 'บาท'
Amount_of_product_in_stock = '20'
tax_id = 'Normal (5.00%)'
category_id = 1
lable = 'No'
Productfile_edit = 'One Piece'
'Clients'
ClientsUsername = 'MT001'
ClientsUsername1 = 'MT0011'
ClientsEmail = '[email protected]'
ClientsPassword = '543210'
ClientsUsergroup = 'group A'
Clientsfile_edit = 'MT001'
'Manufacturers'
ManufacturersTitle = 'test Grand Home (Chaina) Co.,Ltd.'
ManufacturersTitle1 = 'Grand Home (Chaina) Co.,Ltd.'
ManufacturersAlias = 'Grand Home'
ManufacturersShort_description = 'Grand Home (Chaina)'
ManufacturersDescription = 'Grand Home (Chaina) Co.,Ltd.'
ManufacturersURL = 'www.GrandHome.co.th'
ManufacturersAmount_of_products_on_page ='10'
ManufacturersAmount_of_products_in_row ='10'
Manufacturersfile_edit = 'test Grand Home (Chaina) Co.,Ltd.'
class joomla(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Firefox(executable_path=path) # __builtin__.firefoxpath)
self.base_url = wed0 # __builtin__.base_url #=
self.base_url1 = wed1 # __builtin__.base_url1 #=
self.username = user # __builtin__.username #=
self.username1 = user1 # __builtin__.username1 #=
self.username2 = user2 # __builtin__.username1 #=
self.pwd = password # __builtin__.pwd #=
self.pwd1 = password1 # __builtin__.pwd1 #=
self.pwd2 = password2 # __builtin__.pwd1 #=
self.verificationErrors = []
self.accept_next_alert = True
self.wait = WebDriverWait(self.driver, 10)
# self.driver.maximize_window()
def msg_error(self):
for i in range(5):
try:
if self.driver.find_element_by_css_selector("div.alert.alert-error"):
obj = self.driver.find_element_by_css_selector("div.alert.alert-error")
msg = obj.text
self.msg = msg
break
except:
pass
print(i)
time.sleep(1)
else:
msg = "ไม่มี"
self.msg = msg
def report_error(self):
'Report'
Error_test = self.case
Error_test1 = str(Error_test)
driver = self.driver
# obj = self.driver.find_element_by_xpath("/html/body")
# msg = obj.text
self.msg_error()
Url = self.driver.current_url # เก็บ URL ไว้ในตัวแปร
snap = self.driver.get_screenshot_as_base64()
text = str(snap)#snap
base = "data:image/png;base64," + text
url = "http://snap.mindphp.com/index.php"
files = {'paths': base, 'upload': 'upload', 'from_python': 'true'}
response = requests.post(url, data=files)
url_img = response.text
url_snap_img = "http://snap.mindphp.com/index.php%s" % url_img
self.driver.get(wed_mindphp)
for i in range(4):
try:
if self.driver.find_element_by_name("username"):
login = self.wait.until(ec.visibility_of_element_located((By.NAME, "username")))
ActionChains(self.driver).move_to_element(login).perform()
a = self.driver.find_element_by_name("username")
a.clear()
a.send_keys(user1)
a = self.driver.find_element_by_name("password")
a.clear()
a.send_keys(password1)
time.sleep(3)
self.driver.find_element_by_name("login").click()
time.sleep(5)
print('login')
break
except:
if self.driver.find_element_by_link_text("ตั้งกระทู้ใหม่"):
print("ตั้งกระทู้ใหม่")
break
pass
print("ทำใหม่")
time.sleep(2)
else:
print("error")
self.driver.find_element_by_link_text("ตั้งกระทู้ใหม่").click()
a = self.driver.find_element_by_name("subject")
a.clear()
a.send_keys("B - เว็บระบบของ Moozii cart มีปัญหาที่ %s" % Error_test1)
a = self.driver.find_element_by_name("message")
a.clear()
a.send_keys("[color=#FF0000][size=150]เกิดปัญหา moozii cart ขัดข้อง ที่ Case %s[/size][/color]\n"% Error_test1)
a.send_keys('\n')
a.send_keys('ข้อความError : [color=#FF0000]%s[/color] \n' % self.msg)
a.send_keys('ตำแหน่งที่ Error : [color=#FF0000]%s[/color] \n' % self.msg1)
a.send_keys('link error : %s \n' % Url)
a.send_keys('user : %s\n' % user)
a.send_keys('password : %s\n' % password)
a.send_keys('[img]%s[/img]\n' % url_snap_img)
# self.driver.find_element_by_name("post").click()
self.driver.find_element_by_name("preview").click()
time.sleep(15)
driver.quit()
def openwed_Login(self,elementpwd,wed,user,password):
'Login เข้าระบบ Joomla'
self.case = self.openwed_Login.__doc__
self.driver.get(wed)
driver = self.driver
for i in range(10):
try:
if self.driver.find_element_by_name("username"):
break
print(self.driver.get(wed))
except:
pass
print("ทำใหม่")
time.sleep(2)
else:
print("error")
self.msg1 = 'wed error'
self.report_error()
driver.quit()
login = self.wait.until(ec.visibility_of_element_located((By.NAME, "username")))
ActionChains(self.driver).move_to_element(login).perform()
a = self.driver.find_element_by_name("username")
a.clear()
a.send_keys(user)
a = self.driver.find_element_by_name(elementpwd)
a.clear()
a.send_keys(password)
a = self.driver.find_element_by_css_selector(".btn-primary")
a.submit()
time.sleep(5)
def menu_MooZiiCart(self,menu):
menu = menu
driver = self.driver
self.wait.until(ec.visibility_of_element_located((By.LINK_TEXT, "Components")))
self.driver.find_element_by_link_text("Components").click()
for i in range(10):
try:
if self.driver.find_element_by_link_text("MooZiiCart"):break
except:
pass
print("หาใหม่")
time.sleep(2)
else:
print("error")
self.msg1 = 'MooZiiCart'
self.report_error()
driver.quit()
time.sleep(2)
self.driver.find_element_by_link_text("MooZiiCart").click()
for i in range(10):
try:
if self.driver.find_element_by_xpath("//span[contains(.,'%s')]"%menu): break
except:
pass
time.sleep(2)
else:
print ("report bug")
self.msg1 = menu
self.report_error()
driver.quit()
time.sleep(3)
self.driver.find_element_by_xpath("//span[contains(.,'%s')]" % menu).click()
def xpath_click(self, element):
for i in range(10):
try:
if self.driver.find_element_by_xpath(element):break
except:
pass
print('x%d' % i)
time.sleep(2)
else:
print ("Error")
self.msg1 = element
self.report_error()
self.driver.quit()
time.sleep(3)
self.driver.find_element_by_xpath(element).click()
def find(self, element):
for i in range(10):
try:
if self.driver.find_element_by_xpath(element):break
except:
pass
print('x%d' % i)
time.sleep(2)
else:
print ("Error")
self.msg1 = element
self.report_error()
self.driver.quit()
time.sleep(3)
element1 = self.driver.find_element_by_xpath(element)
self.driver.execute_script("arguments[0].click();", element1)
def find_css(self, element):
for i in range(10):
try:
if self.driver.find_element_by_css_selector(element): break
except:
pass
time.sleep(2)
else:
print("Error")
self.msg1 = element
self.report_error()
self.driver.quit()
time.sleep(3)
self.driver.find_element_by_css_selector(element).click()
def find_linktext(self, element):
for i in range(10):
try:
if self.driver.find_element_by_link_text(element): break
except:
pass
time.sleep(2)
else:
print("Error")
self.msg1 = element
self.report_error()
self.driver.quit()
time.sleep(3)
self.driver.find_element_by_link_text(element).click()
def Confirm(self):
obj = self.driver.switch_to.alert
msg = obj.text
print("Alert shows following message: " + msg)
time.sleep(2)
obj.accept()
print(" Clicked on the OK Button in the Alert Window")
time.sleep(5)
def information_name (self,element,information):
for i in range(10):
try:
if self.driver.find_element_by_name(element):
a = self.driver.find_element_by_name(element)
a.clear()
a.send_keys(information)
break
except:
pass
print("pass%d"%i)
time.sleep(2)
else:
print ("Error")
self.msg1 = element
self.report_error()
self.driver.quit()
time.sleep(3)
def open_file(self,file):
for i in range(10):
try:
if self.driver.find_element_by_xpath("//a[contains(.,'%s')]" % file):
break
except:
pass
print('หาใหม่')
time.sleep(1)
else:
print("Error")
self.msg1 = file
self.report_error()
self.driver.quit()
time.sleep(3)
element1 = self.driver.find_element_by_xpath("//a[contains(.,'%s')]" % file)
self.driver.execute_script("arguments[0].click();", element1)
def check_file(self,file):
for i in range(10):
try:
if self.driver.find_element_by_xpath("//a[contains(.,'%s')]" % file):
break
except:
pass
print('check file : %d' % i)
time.sleep(1)
else:
print("Error")
self.msg1 = file
self.report_error()
self.driver.quit()
print('check pass')
def Dropdown(self,element,text):
for i in range(10):
try:
if self.driver.find_element_by_name(element):break
except:
pass
time.sleep(2)
else:
print ("Error")
self.msg1 = element
self.report_error()
self.driver.quit()
time.sleep(3)
select = Select(self.driver.find_element_by_name(element))
select.select_by_visible_text(text)
def box(self, boxtr ,boxtd):
print("xpath=//form[@id='adminForm']/table/tbody/tr[%d]/td[%d]/input" %(boxtr,boxtd))
for i in range(10):
try:
if self.driver.find_element_by_xpath("//form[@id='adminForm']/table/tbody/tr[%d]/td[%d]/input" %(boxtr,boxtd)):
element1 = self.driver.find_element_by_xpath("//form[@id='adminForm']/table/tbody/tr[%d]/td[%d]/input" % (boxtr, boxtd))
self.driver.execute_script("arguments[0].click();", element1)
break
except:
pass
time.sleep(2)
else:
print('error box')
self.msg1 = "box%d"%boxtr
self.report_error()
self.driver.quit()
def menu_buy (self,buy):
for i in range(10):
try:
if self.driver.find_element_by_xpath("(//a[contains(text(),'Buy')])[%d]" %buy):break
except:
pass
time.sleep(2)
else:
print ("Error")
self.msg1 = "Buy%d"%buy
self.report_error()
self.driver.quit()
time.sleep(3)
element1 = self.driver.find_element_by_xpath("(//a[contains(text(),'Buy')])[%d]" %buy)
self.driver.execute_script("arguments[0].click();", element1)
def information_css (self,element,information):
for i in range(10):
try:
if self.driver.find_element_by_css_selector(element):break
except:
pass
print("pass")
time.sleep(2)
else:
print ("Error")
self.msg1 = element
self.report_error()
self.driver.quit()
time.sleep(3)
a = self.driver.find_element_by_css_selector(element)
a.send_keys(information)
def check_Delete(self, check):
for i in range(5):
try:
if self.driver.find_element_by_css_selector(".row0:nth-child(1) #cb0"):break
except:
pass
time.sleep(1)
else:
self.msg1 = "wed error"
self.report_error()
self.driver.quit()
for i in range(5):
try:
if self.driver.find_element_by_xpath("//a[contains(.,'%s')]" % check):
print('c1')
self.report_error()
break
except:
pass
else:
print('check pass')
self.driver.quit()
def check_show(self ,box ,td):
n = box % 2
if n == 1:
m = n - 1
else:
m = n + 1
print('.row%d:nth-child(%d) > td:nth-child(%d) > a'% (m, box, td))
for i in range(10):
try:
if self.driver.find_element_by_css_selector('.row%d:nth-child(%d) > td:nth-child(%d) > a'% (m, box, td)):
ojb = self.driver.find_element_by_css_selector('.row%d:nth-child(%d) > td:nth-child(%d) > a' % (m, box,td))
msg = ojb.text
self.msg1 = msg #.row0:nth-child(3) > td:nth-child(3) > a
break
except:
pass
print(i)
time.sleep(1)
else:
print('error check show')
self.msg1 = 'ไม่มี box%d'%box
self.report_error()
self.driver.quit()
def check_show_P_A_D(self, box, td):
print('.row0:nth-child(%d) > td:nth-child(%d) > a' % ( box, td))
for i in range(10):
try:
if self.driver.find_element_by_css_selector('.row0:nth-child(%d) > td:nth-child(%d) > a' % ( box, td)):
ojb = self.driver.find_element_by_css_selector('.row0:nth-child(%d) > td:nth-child(%d) > a' % (box, td))
msg = ojb.text
self.msg1 = msg # .row0:nth-child(3) > td:nth-child(3) > a
break
except:
pass
print(i)
time.sleep(1)
else:
print('error check show')
self.msg1 = 'ไม่มี box%d' % box
self.report_error()
self.driver.quit()
def Options(self):
'Options'
self.openwed_Login(pw1, self.base_url, self.username, self.pwd)
self.case = self.Options.__doc__
self.menu_MooZiiCart('Options')
def Configuration(self):
'Options'
self.openwed_Login(pw1, self.base_url, self.username, self.pwd)
self.case = self.Options.__doc__
self.menu_MooZiiCart('Configuration')
class MooZiiCart_check(joomla):
def categories_check_Add(self):
'Add categories'
self.driver = webdriver.Firefox(executable_path=path)
self.openwed_Login(pw1,self.base_url,self.username,self.pwd)
self.case = self.categories_check_Add.__doc__
self.menu_MooZiiCart("Categories")
self.find_css(new)
self.find(Toggle)
self.information_name('name_en-GB',CategoryTitle)
self.information_name('alias_en-GB',Alias)
self.information_name('short_description_en-GB', Short_description)
self.information_name('description1', Description)
self.find_linktext('Description (th)')
self.information_name('name_th-TH', CategoryTitle)
self.information_name('alias_th-TH', Alias)
self.information_name('short_description_th-TH', Short_description)
self.find("//*[@id='th-TH-page']/div[1]/table/tbody/tr[4]/td[2]/div/div[2]/div/a")
self.information_name('description2', Description)
self.find_linktext(Detail)
self.Dropdown('access',Access)
self.Dropdown('ordering',Category_sorting)
self.information_name('products_page',Amount_of_products_on_page)
self.information_name('products_row',Amount_of_products_in_row)
self.Dropdown('category_parent_id',Parent_category)
self.find_css(save_close)
self.check_file(CategoryTitle)
self.driver.quit()
def Product_check_Add(self):
'Add Product'
self.driver = webdriver.Firefox(executable_path=path)
self.openwed_Login(pw1, self.base_url, self.username, self.pwd)
self.case = self.Product_check_Add.__doc__
self.menu_MooZiiCart('Products')
self.find_css(new)
self.find(Toggle)
self.information_name('name_en-GB', ProductTitle)
self.information_name('alias_en-GB', ProductAlias)
self.information_name('short_description_en-GB', ProductShort_description)
self.information_name('description1', ProductDescription)
self.find_linktext('Description (th)')
self.information_name('name_th-TH', ProductTitle)
self.information_name('alias_th-TH', ProductAlias)
self.information_name('short_description_th-TH', ProductShort_description)
self.find("//*[@id='th-TH-page']/div[1]/table/tbody/tr[4]/td[2]/div/div[2]/div/a")
self.information_name('description2', ProductDescription)
self.find_linktext(Detail)
self.Dropdown('access', access)
self.information_name('product_price', price)
self.Dropdown('currency_id', currency)
self.information_name('product_quantity', Amount_of_product_in_stock)
self.Dropdown('product_tax_id', tax_id)
self.find_css("#category_id > option:nth-child(%d)" % category_id)
self.Dropdown('label_id', lable)
self.find_css(save_close)
self.check_file(ProductTitle)
self.driver.quit()
def Orders_check_Add(self):
'Add Orders'
self.driver = webdriver.Firefox(executable_path=path)
self.openwed_Login(pw1, self.base_url, self.username, self.pwd)
self.case = self.Orders_check_Add.__doc__
self.menu_MooZiiCart('Orders')
self.find_css(new)
self.find_css(".span10 > input")
self.Dropdown('user_id', 'MT27 mt27')
self.find("//input[@value='Add Product']")
self.find("(//a[contains(text(),'Load')])[2]")
self.find('//*[@id="adminForm"]/table/tbody/tr[1]/td[3]/b/a')
time.sleep(5)
self.information_name('order_subtotal', '200')
self.find_css(save_close)
self.driver.quit()
testcase = 1
if testcase != 0:
print('เข้า')
if testcase == 1 :
print('เข้า1')
runner = unittest.TextTestRunner()
runner.run(MooZiiCart_check.categories_check_Add)
elif testcase == 2 :
print('เข้า2')
runner = unittest.TextTestRunner()
runner.run(MooZiiCart_check.Product_check_Add)
elif testcase == 3 :
print('เข้า3')
runner = unittest.TextTestRunner()
runner.run(MooZiiCart_check.Orders_check_Add)