สวัสดีครับห่างหายไปสักพักใหญ่ๆ กับบทความไอมาโคร ครั้งนี้จะขอมาเพิ่มเติมความแน่นกันสักหน่อยกับเนื้อหาที่เกี่ยวกับไอมาโครล้วนๆ ในบล็อคมือใหม่ไอมาโครของเรานี้
ครั้งนี้จะเป็นกรณีศึกษาที่ไม่ควรพลาดกับแนวทางการเขียนคำสั่งไอมาโคร จริงๆ มันคือคำสั่ง Javascript เพื่อให้เลือกหมวดหมู่สำหรับโพสประกาศ
เจอเปิดประเด็นไปแบบนี้ หลายคนคงเกิดคำถาม แล้วทำไมต้องเขียนแบบ Javascript ทำไม ไม่ใช้ไอมาโครแบบพื้นฐานทั่วไปที่เราเคยใช้กัน
เหตุผลที่เราต้องหันมาเขียนคำสั่งไอมาโครบน ด้วย Javascript เพราะ บางครั้งคำสั่งพื้นฐานของไอมาโครก็ไม่สามารถใช้งานได้กับหน้าเว็บฯรุ่นใหม่ หรือหน้าเว็บฯที่ได้รับการออกแบบมาเป็นพิเศษ ที่มีระบบจัดการอีกแบบ ไม่ขอกล่าวถึงก็แล้วกันเดี๋ยวจะ งง กันไปมากกว่านี้ สำหรับมือใหม่ แนะนำให้ย้อนไปอ่านบทความเก่าๆ ไล่มาจนถึงปัจจุบันเลยก็จะดีนะครับ
ไอมาโครคำสั่งพื้นฐานเลือกหมวดหมู่ไม่ได้ ต้องใช้คำสั่งพิเศษ |
ไอมาโครคำสั่งพื้นฐานเลือกหมวดหมู่ไม่ได้ ต้องใช้คำสั่งพิเศษ
ด้วยเหตุที่เราไม่สามารถใช้งานคำสั่งไอมาโครแบบพื้นฐานเพื่อเลือกหมวดหมู่ที่ต้องการได้ เราจึงต้องหันมาพึ่งพาคำสั่ง Javascript เพราะเป็นคำสั่งที่สามารถเข้าถึงหน้าเว็บฯได้ดี กว่าคำสั่งพื้นฐานของไอมาโครนั่นเอง
หลักการคือ เราต้องเจาะเข้าไปในส่วนที่เป็นลิสรายการหมวดหมู่ที่มีการแสดงผลบนหน้าเว็บฯ และทำการไล่ค้นหาทีละรายการเพื่อหาจุดอ้างอิงที่เราต้องการ นั่นคือ หมวดหมู่ หรือลิสรายการที่เราต้องการ โดยชุดคำสั่งทั้งหมดจะมีดังนี้
ชุดคำสั่งด่านล่างนี้ เป็นชุดคำสั่งไอมาโครที่จะกดที่หมวดหมู่ เพื่อให้แสดงลิสรายการที่เราต้องการ ถ้าคุณนำไปใช้ คุณต้องกาแอททิบิ้วเป้าหมายบนหน้าเว็บฯแล้วนำมาแทนที่ให้ได้
var macro;
macro = "CODE:";
macro += "VERSION BUILD=8970419 RECORDER=FX"+"\n";
macro += "EVENT TYPE=CLICK SELECTOR=\"#ไอดีเป้าหมาย\" BUTTON=0"+"\n";
macro += "WAIT SECONDS=1"+"\n"; iimPlay(macro);
ในที่นี้เราต้องการค้นหาชื่อจังหวัดตามตัวแปลด้านล่าง
var ProV = "แม่ฮ่องสอน";
คำสั่งด้านล่างเราจะเจาะเข้าไปถึง HTML บนหน้าเว็บฯที่มีคลาสชื่อ select2-results__options เพื่อเชื่อมไปถึง li ที่เป็นลิสหมวดหมู่ที่เราต้องการ
var EleLi = window.content.document.getElementsByClassName("select2-results__options")[0].getElementsByTagName("li");
ชุดคำสั่งด้านล่างนี้ เราจะไล่ลำดับ li ทีละชุด เพื่อดึงเอาข้อความมาตรวจสอบ และเปรียบเทียบกับตัวแปลข้างต้นว่าตรงกันหรือไม่ หากตรงกันให้ทำการเพื่อ id ของเราเข้าไปด้วยคำสั่ง .setAttribute() และสั่งให้ไอมาโครกดเลือกลิสรายการนั้นทันที
for(i=0;i<=(EleLi.length)-1;i++){
if( ((EleLi[i].textContent || EleLi[i].innerText).indexOf(ProV) > -1) || (ProV.indexOf(EleLi[i].textContent.trim()) > -1) ){
creaID = "myID"+i;
EleLi[i].getElementsByTagName("span")[0].setAttribute("id",creaID);
var macro;
macro = "CODE:";
macro += "VERSION BUILD=8970419 RECORDER=FX"+"\n";
macro += "SET !ERRORIGNORE YES"+"\n";
macro += "EVENT TYPE=MOUSEDOWN SELECTOR=\"#"+creaID+"\" BUTTON=0"+"\n"; macro += "EVENT TYPE=MOUSEUP SELECTOR=\"#"+creaID+"\" BUTTON=0"+"\n"; macro += "WAIT SECONDS=1"+"\n";
iimPlay(macro); i = EleLi.length+1;
};
};
ทั้งหมดก็มีประมาณนี้ หากไม่เข้าใจ สามารถดูตามวีดีโอด้านล่างนี้เพื่อความเข้าใจ และเพื่อให้มองเห็นภาพร่วมกันได้เลยครับ
ไม่มีความคิดเห็น:
แสดงความคิดเห็น