話說買了蟲師的書,看了四分之一,大概明白了個邏輯,就想用實際網頁弄個腳本出來
然鵝我真是too naive too old,直接錄或寫一個可以走得通的腳本是需要很多基礎知識的
首先你得是學過計算機,編程思維根深蒂固
python有元素搜索、也有調用js、switch frame,后面可能還可以用到ruby語言
總得來說就是什么都能用=你什么都會點=基本計算機思維
人家2小時,我1個月也沒好
別人幫我把腳本修好了,順暢地運行
用到了frame定義,switch to frame,try except小函數找元素,js_remove_r_start_time,execute_script調用js
這是我看書時還沒看到的
總結就是,不真的看完整本數,熟練全部方法,也是不能寫出一個可運行的腳本的!
差距是幾個次元大吖,立馬有放棄的心理
說中了,從入門到放棄
# -*- coding: utf-8 -*- from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys from selenium.webdriver.support.ui import Select from selenium.common.exceptions import NoSuchElementException from selenium.common.exceptions import NoAlertPresentException from selenium.common.exceptions import StaleElementReferenceException from selenium.webdriver.common.action_chains import ActionChains import unittest, time, re # class Test(unittest.TestCase): class Test(): # def setUp(self): def __init__(self): self.driver = webdriver.Chrome() # self.driver = webdriver.Firefox() self.driver.set_window_size('1600', '900') self.driver.implicitly_wait(30) self.base_url = "https://url" self.verificationErrors = [] self.accept_next_alert = True def test_(self): driver = self.driver driver.get(self.base_url + "/zxcz/login/doLogin.do") driver.find_element_by_id("loginName").clear() driver.find_element_by_id("loginName").send_keys("A-test") driver.find_element_by_id("password").clear() driver.find_element_by_id("password").send_keys("888888") driver.find_element_by_id("passKey").clear() driver.find_element_by_id("passKey").send_keys("0000") driver.find_element_by_link_text(u"登錄").click() driver.find_element_by_link_text(u"規則管理").click() time.sleep(2) # xpath: href #(水平參考) # driver.find_element_by_xpath("//*[@class='add']").click() # driver.find_element_by_css_selector("a.add").click() # 先跳轉到iframe,這里有兩個同名的iframe,無法使用id定位 frame1 = driver.find_element_by_xpath("//iframe[contains(@src,'/zxcz/login/goIndex.do?menuId=1')]") driver.switch_to.frame(frame1) frame2 = driver.find_element_by_xpath("//iframe[contains(@src,'/zxcz/rulemgr/ruleIndex.do')]") driver.switch_to.frame(frame2) # 點擊添加按鈕 driver.find_element_by_xpath("//a[contains(@href,'toSaveRule.do')]").click() # driver.find_element_by_xpath("//*[@id='saper-bd']/div/div[2]/div[1]/a[1]").click() # js_start_time = "$('input[id=startTime]').attr('readonly','')" # js_end_time = "$('input[id=endTime]').attr('readonly','')" # action_input_time = ActionChains(driver) try: # driver.find_element_by_id("taskName").clear() driver.find_element_by_id("taskName").send_keys("0323-2") except Exception as e: print("error for finding element %s" %e) print("refind") driver.find_element_by_id("taskName").clear() driver.find_element_by_id("taskName").send_keys("0323-2") # action_input_time.move_to_element(end_filed).click().send_keys('2018-11-11 11:11:11').perform() # driver.find_element_by_id('endTime').click() # 輸入時間 js_remove_r_start_time = "document.getElementById('startTime').removeAttribute('readOnly')" js_remove_e_end_time = "document.getElementById('endTime').removeAttribute('readOnly')" driver.execute_script(js_remove_r_start_time) driver.execute_script(js_remove_e_end_time) js_input_s_value = "document.getElementById('startTime').value=('2018-01-01 12:12:01')" driver.execute_script(js_input_s_value) js_input_e_value = "document.getElementById('endTime').value=('2019-01-01 12:12:01')" driver.execute_script(js_input_e_value) # time.sleep(2) # 開始時間 # start_filed = driver.find_element_by_id('startTime') # driver.find_element_by_id('startTime').clear() # driver.find_element_by_id('startTime').send_keys("2018-01-01 12:12:01") # driver.implicitly_wait(2) # 結束時間 # driver.find_element_by_id('endTime').clear() # driver.find_element_by_id('endTime').send_keys("2019-01-01 12:12:01") # driver.implicitly_wait(2) # 跳轉到第三個iframe # frame3 = driver.find_element_by_xpath("//iframe[@src='about:blank']") # driver.switch_to.frame(frame3) # end_filed = driver.find_element_by_id('endTime') # driver.find_element_by_id('startTime').send_keys("2018-02-01 11:13:01") driver.implicitly_wait(2) print_start_time = driver.find_element_by_id('startTime').get_attribute('value') print_end_time = driver.find_element_by_id('endTime').get_attribute('value') print("print start time%s" %print_start_time) print("print end time%s" %print_end_time) # driver.find_element_by_id("startTime").click() # # ERROR: Caught exception [ERROR: Unsupported command [selectWindow | null | ]] # driver.find_element_by_id("dpOkInput").click() # driver.find_element_by_css_selector("td.WwdayOn").click() # driver.find_element_by_id("dpOkInput").click() # # ERROR: Caught exception [ERROR: Unsupported command [selectWindow | null | ]] # 點擊右邊空白位置取消時間選擇框 # action = ActionChains(driver) # action.move_by_offset(0, 150).perform() driver.implicitly_wait(3) driver.find_element_by_xpath("//input[@value='doc' and @name='filesType' and @type='checkbox']").click() #點解可以@甘多樣野,input係動作抑或屬性 driver.find_element_by_id("files").clear() driver.find_element_by_id("files").send_keys("C:\\Users\\Administrator\\Pictures\\333.png") driver.find_element_by_name("remarks").clear() driver.find_element_by_name("remarks").send_keys("0323") Select(driver.find_element_by_id("uploadId")).select_by_visible_text("yj2") driver.find_element_by_css_selector("input.wi100.submit").click() driver.find_element_by_link_text(u"查閱").click() driver.find_element_by_css_selector("input.wi100").click() def is_element_present(self, how, what): try: self.driver.find_element(by=how, value=what) except NoSuchElementException as e: return False return True def is_alert_present(self): try: self.driver.switch_to_alert() except NoAlertPresentException as e: return False return True def close_alert_and_get_its_text(self): try: alert = self.driver.switch_to_alert() alert_text = alert.text if self.accept_next_alert: alert.accept() else: alert.dismiss() return alert_text finally: self.accept_next_alert = True # def tearDown(self): # self.driver.quit() # self.assertEqual([], self.verificationErrors) if __name__ == "__main__": # unittest.main() op = Test() op.test_()
還能怎樣?!你要我怎樣?!
我..我我只能..
看書咯..鬼叫我讀這個專業,沒有那個腦袋記東西,除了做牛,還能做啥
本來標題是 反其道而行之,說的是要先看書再寫編程,不能實例結合
我改了,心情真tm像失戀,雖然不是很喜歡你,但現在什么希望都沒有了什么人都不喜歡我
插播一個
又有一名妹子找工作工資像蒸糕一樣
來我們公司直接就1w了,才工作了2年,都是頁面的測試,只是負責防火牆的平台。
雖然還不知道人家底細,編程能力、硬件知識
但就是高,還同時拿到4個1w以上的offer
結論:我能力差,但要多面試,多學會如何吹
把工資吹到能保證溫飽問題先,面試技巧也有有待優化
當然,關鍵還是在於IT技能
還是先吹吧