Design

Design
asp.net mvc

2018年10月30日 星期二

在winform內鑲Selenium控制

最近研究出可以在winform內鑲瀏覽器用Selenium控制的方法,這樣就不用每次導出視窗 造成一些問題 也比較美觀,主要方法是透過CefSharp內核把chrome鑲入winform,ChromiumWebBrowser的RemoteDebuggingPort建立個本個遠端路徑,再透過 Selenium ChromeOptions的DebuggerAddress 去做畫面的顯示

程式碼如下
 public partial class Form1 : Form
    {
        private readonly ChromiumWebBrowser browser;
        private static readonly bool DebuggingSubProcess = Debugger.IsAttached;

        private ISelenium selenium;
        private StringBuilder verificationErrors;

        public Form1()
        {
            InitializeComponent();

            var settings = new CefSettings();
            settings.RemoteDebuggingPort = 8088;
            settings.IgnoreCertificateErrors = true;
            Cef.Initialize(settings);
            browser = new ChromiumWebBrowser(url)
            {
                Dock = DockStyle.Fill,
            };
            browser.CreateControl();
            this.Controls.Add(browser);
        }

        public static void GO()
        {
            var driverService = ChromeDriverService.CreateDefaultService();
            driverService.HideCommandPromptWindow = true;

            ChromeOptions options = new ChromeOptions();
            options.DebuggerAddress = "127.0.0.1:8088";
            options.AddArguments("--enable-logging");
            using (var driver = new ChromeDriver(driverService, options))
            {
               //doSomething
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            GO();
        }
    }

2018年10月16日 星期二

Cassandra 自己winform寫了個GUI

待補充
內容 最近因為有工作上 有大量log紀錄的需求 原本是有使用mongodb,redis 這兩種nosql 就試看看新的Cassandra query語法不是那麼有善 , 網路上能用的GUI好像都要收費 因為語法相對簡單我這邊就自己用 winform寫了個GUI 方便查詢 有需要再聯繫我



2018年10月2日 星期二

簡易 HttpClient Post泛型請求

簡易 HttpClient Post泛型請求
我們使用httpclient get or post
常常會想要紀錄log或是回傳exceptional或是做一些事情
發現一直在寫重複的東西 如果我們寫個泛型的靜態方法是不是就乾淨多了




class Program
   {
       static void Main(string[] args)
       {
 
           string url = "http://jsonplaceholder.typicode.com/posts";
           var data = new PostModel();
           data.title = "foo";
           data.body = "bar";
           data.userId = 1;
           var c = HttpClient<PostModelResultModel>(url, data);           
           Console.WriteLine(JsonConvert.SerializeObject(c));
           Console.Read();
 
       }
 
       /// <summary>
       /// 如果沒有post參數的話
       /// </summary>
       /// <typeparam name="TResult"></typeparam>
       /// <param name="url"></param>
       /// <returns></returns>
       protected static TResult HttpClient<TResult>(string url) where TResult : class
       {
           return HttpClient<stringTResult>(url, string.Empty);
       }
 
 
       protected static TResult HttpClient<TPostTResult>(string url, TPost PostData) where TResult : class where TPost : class
       {
 
           var client = new HttpClient();
 
           var task = client.PostAsJsonAsync(url, PostData);
   
           //10秒timeout
           var hasimeOut = task.Wait(10000);
           if (!hasimeOut)
           {
               Console.WriteLine("timeout了");
               Console.Read();
           }
           var response = task.Result;
 
           var jsonString = response.Content.ReadAsStringAsync();
      
           var settings = new JsonSerializerSettings
           {
               NullValueHandling = NullValueHandling.Ignore,
             
           };
 
           //反序列
           var Result = JsonConvert.DeserializeObject<TResult>(jsonString.Result);
 
           return Result;
       }
 
 
 
 
       public class ResponseBase<TResult> {
 
           [JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
           public int Code { getset; }
           [JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
           public string message { getset; }
           [JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
           public TResult data { getset; }
 
       } 
 
 
 
       public class PostModel
       {
           public string title { getset; }
           public string body { getset; }
           public int userId { getset; }
       }
 
 
       public class ResultModel
       {
           public string title { getset; }
           public string body { getset; }
           public int userId { getset; }
           [JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
           public string test { getset; }
       }
 
   }