你還要我怎樣——python腳本調試


話說買了蟲師的書,看了四分之一,大概明白了個邏輯,就想用實際網頁弄個腳本出來

然鵝我真是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技能

還是先吹吧

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM