ฟอรั่ม PSsix

Would you like to react to this message? Create an account in a few clicks or log in to continue.

ฟอรั่มของบล็อก http://pssix.blogspot.com


2 posters

    เกี่ยวกับ ฟังชั่น _IEcreate

    avatar
    foolsopts
    PSsix Member
    PSsix Member


    เกี่ยวกับ ฟังชั่น _IEcreate Empty
    จำนวนข้อความ : 29
    ความนิยม : 17
    เข้าร่วมเมื่อ : 24/08/2010

    เกี่ยวกับ ฟังชั่น _IEcreate Empty เกี่ยวกับ ฟังชั่น _IEcreate

    ตั้งหัวข้อ by foolsopts 28/03/12, 12:05 pm

    _IEcreate สามารถ สร้าง Popup Window ได้มั้ยครับ ถ้าได้ช่วยแนะนำด้วยครับ

    เรามีวิธีไหนที่สามารถ ควบคุม Popup Window ที่เกิดจากการใช้ _IEcreate หน้าเว็ปขึ้นมาแล้วสั่งคลิกไปที่ลิงค์ แล้วเกิด Popup window ขึ้นมา เราสามารถควบคุม Popup Window นั้นได้หรือไม่ครับ อยากเช่น send key ไปที่ input box ของ popup window อะไรประมาณนี้อ่ะครับ

    ขอบคุณล่วงหน้า
    POS
    POS
    PSsix
    PSsix


    เกี่ยวกับ ฟังชั่น _IEcreate Empty เกี่ยวกับ ฟังชั่น _IEcreate Empty เกี่ยวกับ ฟังชั่น _IEcreate Empty
    จำนวนข้อความ : 1152
    ความนิยม : 326
    เข้าร่วมเมื่อ : 19/07/2010

    เกี่ยวกับ ฟังชั่น _IEcreate Empty Re: เกี่ยวกับ ฟังชั่น _IEcreate

    ตั้งหัวข้อ by POS 30/03/12, 02:39 pm

    หน้าง popup ในหน้าต่าง IE (ที่เกิดจากการคลิก)ส่วนใหญ่เกิดจากการเข้าไปกระตุ้นให้ตัววินโดวส์สร้างหน้าต่างขึ้นมาอีกหน้าต่าง ไม่ถือว่าเป็นส่วนประกอบของโปรแกรม IE ดังนั้นถ้าคุณเขียนสคริปต์เพื่อคลิกในหน้าต่าง IE แล้วเกิด popup สคริปจะไม่สามารถจับตัวหน้าต่างได้ เนื่องจากถือว่าเป็นคนละหน้าต่าง ต้องเขียนสคริปต์อีกอันหนึ่งเพื่อคอยจับหน้าต่างนั้น

    เขียนสคริปต์อีกอันก็ใช้คำสั่ง WinWait รันรอหน้าต่าง popup ครับ
    avatar
    foolsopts
    PSsix Member
    PSsix Member


    เกี่ยวกับ ฟังชั่น _IEcreate Empty
    จำนวนข้อความ : 29
    ความนิยม : 17
    เข้าร่วมเมื่อ : 24/08/2010

    เกี่ยวกับ ฟังชั่น _IEcreate Empty Re: เกี่ยวกับ ฟังชั่น _IEcreate

    ตั้งหัวข้อ by foolsopts 30/03/12, 06:52 pm

    POS พิมพ์ว่า:หน้าง popup ในหน้าต่าง IE (ที่เกิดจากการคลิก)ส่วนใหญ่เกิดจากการเข้าไปกระตุ้นให้ตัววินโดวส์สร้างหน้าต่างขึ้นมาอีกหน้าต่าง ไม่ถือว่าเป็นส่วนประกอบของโปรแกรม IE ดังนั้นถ้าคุณเขียนสคริปต์เพื่อคลิกในหน้าต่าง IE แล้วเกิด popup สคริปจะไม่สามารถจับตัวหน้าต่างได้ เนื่องจากถือว่าเป็นคนละหน้าต่าง ต้องเขียนสคริปต์อีกอันหนึ่งเพื่อคอยจับหน้าต่างนั้น

    เขียนสคริปต์อีกอันก็ใช้คำสั่ง WinWait รันรอหน้าต่าง popup ครับ

    ขอบคุณมากครับ สรุปคือ เราไม่สามารถ ใช้ ฟังชั่น _IE ดึงข้อมูล หรือ ส่งข้อมูล หรืออ่านข้อมูลใน หน้า Popup นั้นได้เลยใช่มั้ยครับ หรือพอมีหนทางอื่นมั้ยครับ
    POS
    POS
    PSsix
    PSsix


    เกี่ยวกับ ฟังชั่น _IEcreate Empty เกี่ยวกับ ฟังชั่น _IEcreate Empty เกี่ยวกับ ฟังชั่น _IEcreate Empty
    จำนวนข้อความ : 1152
    ความนิยม : 326
    เข้าร่วมเมื่อ : 19/07/2010

    เกี่ยวกับ ฟังชั่น _IEcreate Empty Re: เกี่ยวกับ ฟังชั่น _IEcreate

    ตั้งหัวข้อ by POS 03/04/12, 06:57 am

    จัดการกับหน้าต่างที่เด้งมาได้ครับ แต่ที่สคริปต์สั่งคลิกควบคุมหน้าต่างไม่ได้เพราะมันผิดกฏของ AutoIt เนื่องจากหน้าต่างที่เด้งมานั้นถือว่าเป็นหน้าต่างใหม่ แต่สคริปต์ยังค้างอยู่ในหน้าต่างเก่า (IE) ดังนั้นต้อง เขียนสคริปต์สร้าง Processes (โปรแกรมแยก)ใหม่ซ้อนมาก่อนที่จะคลิก พอคลิกเสร็จ Processes นั้นก็จะหายไปอัตโนมัติ

    ผมไม่เห็นสคริปต์หรือเว็บที่คุณเขียนสคริปต์สั่งคลิก ดังนั้นต้องนำสคริปต์ที่มีปัญหามาก่อน ผมจะจึงแก้ไขเขียนตัวอย่างให้ดูได้ หรือลองหากระทู้เก่าๆ จะมีวิธีการสร้างโปรแกรมใหม่ซ้อนในสคริปต์ แต่ผมจำไม่ได้แล้วว่าอยู่ในกระทู้ไหน




    avatar
    foolsopts
    PSsix Member
    PSsix Member


    เกี่ยวกับ ฟังชั่น _IEcreate Empty
    จำนวนข้อความ : 29
    ความนิยม : 17
    เข้าร่วมเมื่อ : 24/08/2010

    เกี่ยวกับ ฟังชั่น _IEcreate Empty Re: เกี่ยวกับ ฟังชั่น _IEcreate

    ตั้งหัวข้อ by foolsopts 03/04/12, 09:50 am

    POS พิมพ์ว่า:จัดการกับหน้าต่างที่เด้งมาได้ครับ แต่ที่สคริปต์สั่งคลิกควบคุมหน้าต่างไม่ได้เพราะมันผิดกฏของ AutoIt เนื่องจากหน้าต่างที่เด้งมานั้นถือว่าเป็นหน้าต่างใหม่ แต่สคริปต์ยังค้างอยู่ในหน้าต่างเก่า (IE) ดังนั้นต้อง เขียนสคริปต์สร้าง Processes (โปรแกรมแยก)ใหม่ซ้อนมาก่อนที่จะคลิก พอคลิกเสร็จ Processes นั้นก็จะหายไปอัตโนมัติ

    ผมไม่เห็นสคริปต์หรือเว็บที่คุณเขียนสคริปต์สั่งคลิก ดังนั้นต้องนำสคริปต์ที่มีปัญหามาก่อน ผมจะจึงแก้ไขเขียนตัวอย่างให้ดูได้ หรือลองหากระทู้เก่าๆ จะมีวิธีการสร้างโปรแกรมใหม่ซ้อนในสคริปต์ แต่ผมจำไม่ได้แล้วว่าอยู่ในกระทู้ไหน





    web ที่ ทดลองสคริป คือ [You must be registered and logged in to see this link.] ครับ

    #include <ie.au3>

    $oIE = _IECreate("[You must be registered and logged in to see this link.]

    _IELoadWait($oIE)

    $nav = _IENavigate($oIE,"javascript:getStart();",0) ;ที่ใช้คำสั่งนี้เพราะปุ่ม game start มันเป็น flash เลยไม่รู้จะสั่งคลิกยังไง แต่ดูใน code หน้าเว็ป มันใช้ javascript รันอีกที เลยเรียกตรง


    พอหน้าต่าง Popup ล็อคอิน เด้งขึ้นมา ผมต้องการจะให้โปรแกรม กรอก ไอดี พาส ในนี้เลยครับ

    และเป็นไปได้มั้ย ที่จะให้ _IE ซ่อน ทั้งหมด

    ที่ผมพอแก้ไขปัญหาได้ตอนนี้คือ พอ popup เด้งขึ้นมา ก็สั่งเมาส์ คลิก ไปที่พิกัดของ inputbox ใน popup แล้ว ค่อย Send แต่มัน ใช้ ในโหมด ซ่อนไม่ได้
    POS
    POS
    PSsix
    PSsix


    เกี่ยวกับ ฟังชั่น _IEcreate Empty เกี่ยวกับ ฟังชั่น _IEcreate Empty เกี่ยวกับ ฟังชั่น _IEcreate Empty
    จำนวนข้อความ : 1152
    ความนิยม : 326
    เข้าร่วมเมื่อ : 19/07/2010

    เกี่ยวกับ ฟังชั่น _IEcreate Empty Re: เกี่ยวกับ ฟังชั่น _IEcreate

    ตั้งหัวข้อ by POS 04/04/12, 06:30 am

    ถ้าเป็นหน้าต่าง IE ใหม่เด้งขึ้นมาแบบนี้ เขียนสคริปต์จับหน้าต่างใหม่และลบหน้าต่างเก่าทิ้งได้เลยครับ ตัวอย่าง


    Code:
    #include <ie.au3>

    $oIE = _IECreate("www.sf.in.th",0,0)
    _IELoadWait($oIE)

    ;~                    ;$oIE = _IENavigate($oIE,"javascript:getStart();",1) ;ที่ใช้คำสั่งนี้เพราะปุ่ม game start มันเป็น flash เลยไม่รู้จะสั่งคลิกยังไง แต่ดูใน code หน้าเว็ป มันใช้ javascript รันอีกที เลยเรียกตรง
     $oIE.document.parentwindow.execScript("javascript:getStart();")
    _IEQuit($oIE)
    Do
    $oIE = _IEAttach("http://sf.gg.in.th/Login","URL")
        If Not @error Then
           _IEAction($oIE, "invisible") ;ซ่อนหน้าต่าง
                EndIf
        Sleep ( 10 )
    Until $oIE <>0

    Sleep(1000)


     $oForm = _IEFormGetObjByName($oIE, "form1")
     $oQuery = _IEFormElementGetObjByName($oForm, "txtLogon")
    _IEFormElementSetValue($oQuery, "PSsix") ;username
    ;~  $oIE.document.parentwindow.execScript("txtLogon_Click()")
     $oQuery = _IEFormElementGetObjByName($oForm, "txtPassword")
     _IEFormElementSetValue($oQuery, "PSsix2") ;password
    ;~ $oIE.document.parentwindow.execScript("txtPass_Click()")
    $oSubmit = _IEGetObjByName($oIE, "ImageButton1")
    _IEAction($oSubmit, "click")


    Sleep(1000)
    _IEQuit($oIE)

    ProcessClose("iexplore.exe") ;ป้องกัน IE ที่ซ่อนอยู่แต่ปิดไม่ลงดึงแรมไปใช้

      เวลาขณะนี้ 19/04/24, 09:53 am