Çapraz Tarayıcı Komut Dosyası (CBS) - Voodoo RPA

by onezero
4 sene ago
2395 Views

İçindekiler Tablosu


Voodoo RPA Çapraz Tarayıcı Komut Dosyası (CBS)

CBS nedir?

BS veya CBS Object, Voodoo RPA ile işletim sisteminizde yüklü olan web tarayıcılarınız arasında bir iletişim modelidir. CBS, “Cross-Browser Scripting” ifadesinin kısaltmasıdır. RPA Geliştiricileri, Voodoo Studio kullanarak bir senaryo tasarlarken, komut dosyasını doğrudan tarayıcıya göndermek isteyebilirler.Bu komut dosyası, tarayıcının bildiği herhangi bir standart olabilir, yani saf Javascript veya jQuery. Voodoo Browser Uzantısı (Chrome veya Firefox) ahedef web uygulamanıza otomatik olarak jQuery API’sini enjekte eder. Bu nedenle, siteniz jQuery kullansın veya kullanmasın, RPA geliştiricileri, Voodoo Studio’da CBS Object Creator kullanarak CBS Nesnesini oluştururken doğrudan jQuery yazar.

Bu teknoloji Voodoo EDE Kütüphanesidir. Varsayılan olarak, Voodoo RPA 2.0 veya daha yüksek sürümleriyle birlikte gelir. Manuel olarak indirmek isterseniz buradan indirip EDE dosya referanslarına ekleyin.

Methods

Özellikler Açıklamalar
int send(string pureBrowserScript) Saf komut dosyasını Tarayıcıya gönderin. Bu yöntem processID’yi döndürür.
Not: Voodoo Tarayıcı Uzantıları, son jQuery API bir web sayfasına enjekte eder . Böylece doğrudan Jquery + Pure Javascript kodunu birlikte yazabilirsiniz.
int sendObj(string nameOfCBSObject, Dictionary < string, string > keyValues = null) Tarayıcıya CBS OBject’i gönderin. CBS Nesnenizdeki dinamik Anahtarları ({:mykey}) değiştirmek için sözlük olarak ikinci bir parametre gönderebilirsiniz. Bu yöntem processID’yi döndürür.
Not: CBS Nesnesi oluşturmak için Voodoo Studio’da CBS Nesne Oluşturucu aracını kullanabilirsiniz.
Dictionary < int, string > check (int processID, int ms = 10000) İşlem sonucunu kontrol edin ve isteniyorsa tarayıcıdan bir yanıt alın.
Not: Bu yöntem sözlük döndürür. İlk Anahtar sonuç kodudur ve İlk Değer, komut dosyanızda “var yanıt” anahtarını kullanarak tasarladıysanız yanıttır. Sonuç Kodları (İlk Anahtar): [-1: görev bulunamadı | 0: bekleyen görev | 1: görev çalışması devam ediyor veya işlem bu durumda takılı kaldığı için komut dosyası hatası oluştu | 2: görev tamamlandı]

Örnek#1 (Pure Script)

namespace VoodooImplementation {
    using System;  
    using VooDooCommonData.CommonInterface;
    using VooDooCommonData.InstanceData;
    
    using System.Collections.Generic;
    using System.Linq;
    using CBSLoader;
    
    public class ComputationEvaluator : System.MarshalByRefObject, IPlugInComputation {
        
        private bool result_;
        
        private VooDooCommonData.InstanceData.PlanDataInstanceManager planDataInstanceManager_;
        
        /// Default Constructor for class
        public ComputationEvaluator() {
        }
        
        public bool result {
            get {
                return result_;
            }
        }
        
        public virtual VooDooCommonData.InstanceData.PlanDataInstanceManager planDataInstanceManager {
            get {
                return planDataInstanceManager_;
            }
            set {
                planDataInstanceManager_ = value;
            }
        }
        
        /// Calculate
        public virtual void ExecuteComputation() {
            
            CBS CBSObj = new CBS();
            int id = CBSObj.send("var name = $(\".izquierda:eq(0)\").text(); var age = $(\".izquierda:eq(2)\").text(); result = name + '|' + age;");
            Dictionary<int, string> result = CBSObj.check(id, 5000);

            if(result.First().Key == 2) {
                string[] resultA = result.First().Value.Split('|');
                planDataInstanceManager_.SetDataTableValueFromCurrentDataRowIndex(5, "name", resultA[0]);
                planDataInstanceManager_.SetDataTableValueFromCurrentDataRowIndex(5, "age", resultA[1]);
                result_ = true;
            } else {
                result_ = false;
            }
            
        }
    }
}

Örnek #2 (CBS Object)

Bu örnekte CBS Nesnesi adı “myCBSObject” olarak tanımlanmıştır.

var name = $(".izquierda:eq({:nameIndex})").text(); 
var age = $(".izquierda:eq({:ageIndex})").text(); 
result = JSON.stringify([name, age]);
namespace VoodooImplementation {
    using System;  
    using VooDooCommonData.CommonInterface;
    using VooDooCommonData.InstanceData;
    
    using Newtonsoft.Json;
    using System.Collections.Generic;
    using System.Linq;
    using CBSLoader;
    
    public class ComputationEvaluator : System.MarshalByRefObject, IPlugInComputation {
        
        private bool result_;
        
        private VooDooCommonData.InstanceData.PlanDataInstanceManager planDataInstanceManager_;
        
        /// Default Constructor for class
        public ComputationEvaluator() {
        }
        
        public bool result {
            get {
                return result_;
            }
        }
        
        public virtual VooDooCommonData.InstanceData.PlanDataInstanceManager planDataInstanceManager {
            get {
                return planDataInstanceManager_;
            }
            set {
                planDataInstanceManager_ = value;
            }
        }
        
        /// Calculate
        public virtual void ExecuteComputation() {
            
            CBS CBSObj = new CBS();
            int id = CBSObj.sendObj("myCBSObject", new Dictionary<string, string> {{"nameIndex", "0"}, {"ageIndex", "2"}});
            Dictionary<int, string> result = CBSObj.check(id, 5000);
            
            if(result.First().Key == 2) {
                List<string> person = JsonConvert.DeserializeObject<List<string>>(result.First().Value);
                planDataInstanceManager_.SetDataTableValueFromCurrentDataRowIndex(5, "name", person[0]);
                planDataInstanceManager_.SetDataTableValueFromCurrentDataRowIndex(5, "age", person[1]);
                result_ = true;
            } else {
                result_ = false;
            }
            
        }
    }
}

Örnek #3 (Ascii Olmayan Karakterler İçin CBS Nesnesi)

Bu örnek, Emojiler gibi tarayıcıdan ascii olmayan karakterler içeren içeriği almakla ilgilidir.
CBS Nesnesi adı “myCBSObject” olarak tanımlanmıştır.

var topic = $(".feed-shared-update-v2__description-wrapper div div span span span").eq(0).text();
var like = $("div.social-details-social-activity > ul > li.social-details-social-counts__reactions.social-details-social-counts__item > button > span").eq(1).text();
result = JSON.stringify([encodeURIComponent(topic),like]);
namespace VoodooImplementation {
    using System;  
    using VooDooCommonData.CommonInterface;
    using VooDooCommonData.InstanceData;
    
    using Newtonsoft.Json;
    using System.Collections.Generic;
    using System.Linq;
    using CBSLoader;
    
    public class ComputationEvaluator : System.MarshalByRefObject, IPlugInComputation {
        
        private bool result_;
        
        private VooDooCommonData.InstanceData.PlanDataInstanceManager planDataInstanceManager_;
        
        /// Default Constructor for class
        public ComputationEvaluator() {
        }
        
        public bool result {
            get {
                return result_;
            }
        }
        
        public virtual VooDooCommonData.InstanceData.PlanDataInstanceManager planDataInstanceManager {
            get {
                return planDataInstanceManager_;
            }
            set {
                planDataInstanceManager_ = value;
            }
        }
        
        /// Calculate
        public virtual void ExecuteComputation() {
            
            CBS CBSObj = new CBS();
            int id = CBSObj.sendObj("myCBSObject", new Dictionary<string, string> {});
            Dictionary<int, string> result = CBSObj.check(id, 5000);
            
            if(result.First().Key == 2) {
                List<string> post = JsonConvert.DeserializeObject<List<string>>(result.First().Value);
                planDataInstanceManager_.SetDataTableValueFromCurrentDataRowIndex(15, "topic", Uri.UnescapeDataString(post[0]));
                planDataInstanceManager_.SetDataTableValueFromCurrentDataRowIndex(15, "like", post[1]);
                result_ = true;
            } else {
                result_ = false;
            }
            
        }
    }
}

Örnek #4 (Ascii Olmayan Karakterler ve Çok Boyutlu Veri Alma için CBS Nesnesi)

Bu örnek, ‘Emojiler’ gibi ascii olmayan karakterleri ve ‘Tablo’ gibi çok boyutlu verileri içeren içeriği almakla ilgilidir.
CBS Nesnesi adı “getCommend” olarak tanımlanmıştır.

comments = [];
$("#tabPanelProComments ul").find('li').each(function(key){
	comment = [];
	var current = $(this);
	comment[0] = current.find('.ratingCont span').attr('class');
	comment[1] = encodeURIComponent(current.find('.commentTitle').text());
	comment[2] = encodeURIComponent(current.find('p').text());
	comments[key] = comment;
});

result = JSON.stringify(comments);

$('html, body').animate({scrollTop: $(".pagination").offset().top - 100}, 1000);
namespace VoodooImplementation {
    using System;
    using VooDooCommonData.CommonInterface;
    using VooDooCommonData.InstanceData;
    using System.IO;
    using System.Data;
    
    using Newtonsoft.Json;
    using System.Collections.Generic;
    using System.Linq;
    using CBSLoader;    
    
    public class ComputationEvaluator : System.MarshalByRefObject, IPlugInComputation {
        
        private bool result_;
        
        private VooDooCommonData.InstanceData.PlanDataInstanceManager planDataInstanceManager_;
        
        /// Default Constructor for class
        public ComputationEvaluator() {
        }
        
        public bool result {
            get {
                return result_;
            }
        }
        
        public virtual VooDooCommonData.InstanceData.PlanDataInstanceManager planDataInstanceManager {
            get {
                return planDataInstanceManager_;
            }
            set {
                planDataInstanceManager_ = value;
            }
        }
        
        /// Calculate
        public virtual void ExecuteComputation() {
            CBS CBSObj = new CBS();
            int id = CBSObj.sendObj("getComments", new Dictionary<string, string> {});
            Dictionary result = CBSObj.check(id, 5000);
            
            if(result.First().Key == 2) {
                List> comments = JsonConvert.DeserializeObject<List<List<string>>>(result.First().Value);

                foreach(var comment in comments) {
                    // Create Row Instance
                    DataRow dr = planDataInstanceManager_.GetNewRow(16);
                    dr[0] = comment[0];
                    dr[1] = Uri.UnescapeDataString(comment[1]);
                    dr[2] = Uri.UnescapeDataString(comment[2]);
                    dr[3] = "-";

                    planDataInstanceManager_.AddRowToDataTable(16, dr);
                }
                
                result_ = true;
            } else {
                result_ = false;
            }
        }
    }
}

Örnek#5 (Eğer ulaşılan element ID ise ve içerisinde “.” varsa)

Bu tür bir hatada, ulaşılan element eğer ID ise ve içerisinde bir nokta varsa.t

  • Örnek- 5
  • Konu Açıklama
    Problem
    • CBS ile ulaştığımız öğe kimlik numarasıysa ve içinde bir nokta varsa, bir hata alır.

    Çözüm
    • Ulaşılan ID numarasında “.” varsa öncesinde “//” konmalıdır. (Örneğin //.)

    var fırsatNo = $("#gsft_main").contents().find("#sys_display\\.incident\\.u_opportunity").val(123);
    var fırsatKalem = $("#gsft_main").contents().find("#sys_display\\.incident\\.u_line_item").val(123);
    var calisma = $("#gsft_main").contents().find("#incident\\.u_htmlcomments").val(123);
    var kapanma = $("#gsft_main").contents().find('#incident\\.close_code').val("Converted to CR");
    
    result = JSON.stringify([fırsatNo, fırsatKalem, calisma, kapanma]);
    
    namespace VoodooImplementation {
        using System;  
        using VooDooCommonData.CommonInterface;
        using VooDooCommonData.InstanceData;
        
        using Newtonsoft.Json;
        using System.Collections.Generic;
        using System.Linq;
        using CBSLoader;
        
        public class ComputationEvaluator : System.MarshalByRefObject, IPlugInComputation {
            
            private bool result_;
            
            private VooDooCommonData.InstanceData.PlanDataInstanceManager planDataInstanceManager_;
            
            /// Default Constructor for class
            public ComputationEvaluator() {
            }
            
            public bool result {
                get {
                    return result_;
                }
            }
            
            public virtual VooDooCommonData.InstanceData.PlanDataInstanceManager planDataInstanceManager {
                get {
                    return planDataInstanceManager_;
                }
                set {
                    planDataInstanceManager_ = value;
                }
            }
            
            /// Calculate
            public virtual void ExecuteComputation() {
                
                CBS CBSObj = new CBS();
                int id = CBSObj.sendObj("myCBSObject", new Dictionary<string, string> {});
                Dictionary<int, string> result = CBSObj.check(id, 5000);
                
               
                    result_ = true;
                } else {
                    result_ = false;
                }
                
            }
        }
    }