Ответы пользователя по тегу C#
  • Selenium Webdriver + ChromeDriver — баги в работе с русскими буквами?

    @humblegenius
    Это скорее всего из-за того, что селениум пытается эмулировать нажатие каждой кнопки и не все клавиши успвают прэмулрватья. Подобные глюки в IE драйвере решал отключением нативного управления браузером («EnableNativeEvents = false»):
    new OpenQA.Selenium.IE.InternetExplorerDriver(
        new OpenQA.Selenium.IE.InternetExplorerOptions {
    				IntroduceInstabilityByIgnoringProtectedModeSettings = true,
    				EnableNativeEvents = false
        }
    )
    

    Посмотрите, может для Хрома тоже есть подобная опция.
    Ответ написан
    2 комментария
  • Как отловить ответ сервера (Awesomium 1.7)

    @humblegenius
    Либо с помощью DataSource для конкретного локального домена:
    class MyDataSource : DataSource {
    	unsafe protected override void OnRequest(DataSourceRequest request) {
    		string url = request.Path.Split('#')[0];
    		string name = Path.GetFileName(url);
    		string ext = Path.GetExtension(url);
    		byte[] bytes = ResourceByteArray(name);
    		if (bytes == null) {
    			System.Windows.Forms.MessageBox.Show("File Not Found: " + url);
    			bytes = new byte[] { };
    		}
    		DataSourceResponse resp=new DataSourceResponse();
    		fixed (byte* p = bytes) {
    			IntPtr ptr = (IntPtr)p;
    			resp.Buffer=ptr;
    			resp.MimeType=GetMimeType(ext);
    			resp.Size=Convert.ToUInt32(bytes.Length);
    			SendResponse(request, resp);
    		}
    				
    	}
    }
    
    void Form1_Shown(object sender, EventArgs e) {
    	webControl1.WebSession.AddDataSource("sss", new MyDataSource());
    	webControl1.Source = new Uri("asset://sss/index.html");
    }
    
    Ответ написан
    Комментировать
  • Как отловить ответ сервера (Awesomium 1.7)

    @humblegenius
    Вот пример для ResourceInterceptor в версии 1.7:
    class ResourceInterceptor : IResourceInterceptor {
    	public bool OnFilterNavigation(NavigationRequest request) {
    		throw new NotImplementedException();
    	}
    
    	unsafe public ResourceResponse OnRequest(ResourceRequest request) {
    		string url = request.Url.OriginalString;
    		string name = Path.GetFileName(url);
    		string ext = Path.GetExtension(url);
    		byte[] bytes = ResourceByteArray(name);
    		if (bytes == null) {
    			System.Windows.Forms.MessageBox.Show("File Not Found: " + url);
    			bytes = new byte[] { };
    		}
    		fixed (byte* p = bytes) {
    			IntPtr ptr = (IntPtr)p;
    			return ResourceResponse.Create(Convert.ToUInt32(bytes.Length), ptr, GetMimeType(ext));
    		}
    	}
    }
    
    void Form1_Shown(object sender, EventArgs e) {
    	WebCore.ResourceInterceptor = new ResourceInterceptor();
    	webControl1.Source = new Uri("asset://sss/index.html");
    }
    


    Но в отличии от версии 1.6 я не нашел как в 1.7 перехватывать запросы с другого домена. Он работает только для адресов, которые начинаются на «asset://».
    Ответ написан
    Комментировать
  • Awesomium 1.7 + Proxy

    @humblegenius
    Только недавно начал разбираться с Awesomium (причем выбрал версию 1.6), поэтому могу предложить лишь перехватывать запросы методом OnRequest для версии 1.7 либо для версии 1.6: WebControl.ResourceRequest.
    Ответ написан
    Комментировать