Tôi đang cố gắng gửi đầu vào (nút loại =). Nhưng tôi không thể cập nhật giá trị. Bất kỳ trợ giúp nào được đánh giá cao. Tôi đã đính kèm testcase dưới đây để bạn tham khảo.Sử dụng các ràng buộc Python, Selenium WebDriver nhấp() không hoạt động đôi khi.
tìm kiếm CLICK HERE KHÔNG
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import Select
from selenium.common.exceptions import NoSuchElementException
import unittest, time, re,datetime,os,sys
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains
def is_element_present(inst,selector,value):
try:
inst.find_element(by=selector, value=value)
return True
except:
return False
class Testing(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Chrome()
self.driver.implicitly_wait(5)
self.base_url = "http://new.ossmoketest.appspot.com/"
self.verificationErrors = []
def test_ing(self):
try:
driver = self.driver
driver.get(self.base_url + "/Apab4b39d4_09d7_11e1_8df9_139372201eeb/1/signin?forward=/%3F")
now = datetime.datetime.now()
start = time.clock()
for i in range(5000000):
try:
if is_element_present(driver,By.ID,"userid"): break
except: pass
else: self.fail("time out")
end = time.clock()
diff = end - start
print diff
driver.find_element_by_id("userid").clear()
driver.find_element_by_id("userid").send_keys("[email protected]")
driver.find_element_by_xpath("//input[@src='/static/images/signup.png']").click()
print 'finished'
start = time.clock()
for i in range(5000000):
try:
if is_element_present(driver,By.LINK_TEXT,"Logout"): break
except: pass
else: self.fail("time out")
end = time.clock()
diff = end - start
print diff
time.sleep(5)
start = time.clock()
name = "smoketest"+ str(now.minute) +str(now.second)
for i in range(5000000):
try:
if is_element_present(driver,By.LINK_TEXT,"PurchaseOrder"): break
except: pass
else: self.fail("time out")
end = time.clock()
diff = end - start
driver.find_element_by_link_text('PurchaseOrder').click()
name = "smoketest"+ str(now.minute) +str(now.second)
start = time.clock()
for i in range(5000000):
try:
if is_element_present(driver,By.ID,"Customer_Name"): break
except: pass
else: self.fail("time out")
end = time.clock()
diff = end - start
newproduct = "rexona"+ str(now.minute) +str(now.second)
newprice = str(now.minute) +str(now.second)
newprice = float(newprice)
print newprice
driver.find_element_by_xpath("//input[starts-with(@id,'New_Product')]").send_keys(newproduct)
driver.find_element_by_xpath("//input[starts-with(@id,'Price')]").clear()
time.sleep(3)
driver.find_element_by_xpath("//input[starts-with(@id,'Price')]").send_keys(Keys.CONTROL+'a'+Keys.NULL, str(newprice))
Mouse_cntrl = ActionChains(driver)
Mouse_cntrl.release(driver.find_element_by_xpath("//input[starts-with(@id,'Price')]"))
value = newprice
print value
time.sleep(2)
print 'start'
print driver.find_element_by_xpath("//input[starts-with(@id,'NewItem_NewItem')]").get_attribute('data-id')
# ------------------------CLICK FAILS HERE ------------------------------
# driver.find_element_by_xpath("//input[starts-with(@id,'NewItem_NewItem')]").click()
# driver.find_element_by_xpath("//input[starts-with(@id,'NewItem_NewItem')]").submit()
driver.find_element_by_xpath("//input[starts-with(@id,'NewItem_NewItem')]").send_keys(keys.ENTER)
# Mouse_cntrl.double_click(driver.find_element_by_xpath("//input[starts-with(@id,'NewItem_NewItem')]"))
for i in range(10):
try:
print driver.switch_to_alert().text
if driver.switch_to_alert():
driver.switch_to_alert().accept()
break
except: pass
time.sleep(1)
else:
print "alert not found"
print 'finished -- '
time.sleep(8)
driver.find_element_by_xpath("//input[starts-with(@id,'Product')]").click()
arg = newproduct
print 'end'
for i in range(60):
try:
if is_element_present(driver,By.LINK_TEXT,arg): break
except: pass
time.sleep(1)
else: self.fail("time out")
# sel.mouse_over("//html/body/ul/li/a[.=\""+arg+"\"]")
driver.find_element_by_link_text(arg).click()
start = time.clock()
time.sleep(25)
for i in range(1000000):
try:
if newprice == float(driver.find_element_by_id('Unit_Price').text):
end = time.clock()
diff = end - start
log.log(module='Smoke',testcase='Action New', result='Pass',time_taken= diff)
break
except: pass
else:
log.log(module='Smoke',testcase='Action New', result='Fail')
self.fail('New Failure')
log.log(module='Smoke',testcase='On Submit', result='Pass',time_taken= diff)
driver.find_element_by_id('Quantity').send_keys(Keys.CONTROL+'a'+Keys.NULL,"1")
time.sleep(5)
start = time.clock()
for i in range(1000000):
try:
if value == float(driver.find_element_by_id('Unit_Price').text):
end = time.clock()
diff = end - start
log.log(module='Smoke',testcase='Multiply', result='Pass',time_taken= diff)
break
except: pass
else: self.fail("time out")
for i in range(1000000):
try:
if value == float(driver.find_element_by_id('Amount').text):
end = time.clock()
diff = end - start
log.log(module='Smoke',testcase='DSUM with Parent', result='Pass',time_taken= diff)
break
except: pass
else:
end = time.clock()
diff = end - start
log.log(module='Smoke',testcase='DSUM with Parent', result='Fail',time_taken= diff)
self.fail("time out")
except:
self.driver.quit()
e = sys.exc_info()[1]
print str(e)
def tearDown(self):
self.driver.quit()
self.assertEqual([], self.verificationErrors)
if __name__ == "__main__":
unittest.main()
Nó đã được một showstopper cho công việc của tôi. Bất kỳ trợ giúp nào được đánh giá cao.Thanks
mã nào bị lỗi? – Julian
gì về selector css:. 'driver.find_element_by_css_selector ("đầu vào [id * = NewItem_NewItem]") click() ' Ngoài ra, không dòng này cung cấp cho bạn các thuộc tính? 'print driver.find_element_by_xpath (" // input [starts-with (@ id, 'NewItem_NewItem')] "). Get_attribute ('data-id')' Nếu có, có javascript chạy sau khi tải trang đó không có thể ảnh hưởng đến yếu tố này? –
Phần tử này có thể không phải là 'sẵn sàng' cho nhấp chuột theo một cách nào đó như là kết quả của việc viết lại trang. Xác định lý do tại sao, sau đó lặp trong khi điều kiện đó tràn ngập hoặc cho đến khi hết thời gian. –