WFetch – Simple Microsoft Tool for troubleshooting HTTP connections

Wfetch is originally part of the IIS 6.0 Resource Kit Tools.
It can be used to troubleshoot http redirects, http status codes etc.

This simple but powerful testing tool is a must-have for any system administrator or Web site manager. Wfetch’s simple GUI offers easy input and clear output to test almost any Web host. Don’t expect a manual or clear failure information. This tool was released for expert users.Operating Wfetch is actually very simple, providing you understand Web functions such as Get, Put, Head, Trace, Post, and others. It’s a mere matter of using a few pull-downs, entering some simple text and pressing Go. The trick comes when users must interpret the Log Output from their commands. If Get HTTP/1.1\r\n makes sense, this app was written for you. The utility offers numerous authentication and connection features. Additional commands make it easy to copy and paste text from the output log file.Wfetch is not secure as it stores user names and passwords in plain text. Nevertheless, it is an invaluable freeware tool for any user looking to diagnosis certain connection problems.

Source: WFetch – Free download and software reviews – CNET Download.com

More info:
https://support.microsoft.com/en-in/help/284285/how-to-use-wfetch-exe-to-troubleshoot-http-connections

 

How To Automatically Retry Failed Tests in Nunit

If you have some randomly failing tests, such as Selenium driver based tests and are using Nunit as testing framework, here is one way to enable automatic re-run of the those failing tests. (Works with Nunit 3+ adding a custom method attribute)

Source: How To Automatically Retry Failed Tests in Nunit – Testing repository

Problem with remote Selenium IE driver “Unable to find element with css selector”

Running my Selenium tests locally against IE11 works fine, but when calling remote Selenium server running the same browser and Selenium drivers setup I get this:

System.Exception : Timed out after 10 seconds, could not find visible element 'By.CssSelector: body'
 ----> OpenQA.Selenium.WebDriverTimeoutException : Timed out after 10 seconds
 ----> OpenQA.Selenium.NoSuchElementException : Unable to find element with css selector == body

The problem is connected to the fact that the IEDriverServer.exe runs the server IE11 version. In my case this is a Windows Server 2016 which has a higher security restriction.

For me the solution was to disable the Internet Explorer Enhanced Security Configuration. Follow this guide for the Windows Server 2016 version.

Disable Internet Explorer Enhanced Security Configuration in Windows Server 2016

The same error could also be caused by javascript not enabled for the driver:

options.AddAdditionalCapability("javascriptEnabled", "true");

or need driver to switch to the correct frame/window

webDriver.switchTo().defaultContent()

More info here:
https://github.com/SeleniumHQ/selenium/issues/3611

Powershell Generic Invoke-RestMethod / WebRequest error handler

From: https://stackoverflow.com/questions/39319680/onelogin-rest-api-with-powershells-invoke-restmethod

#generic Invoke-RestMethod / WebRequest error handler
#https://stackoverflow.com/questions/39319680/onelogin-rest-api-with-powershells-invoke-restmethod
function Failure {
$global:helpme = $body
$global:helpmoref = $moref
$global:result = $_.Exception.Response.GetResponseStream()
$global:reader = New-Object System.IO.StreamReader($global:result)
$global:responseBody = $global:reader.ReadToEnd();
Write-Host -BackgroundColor:Black -ForegroundColor:Red "Status: A system exception was caught."
Write-Host -BackgroundColor:Black -ForegroundColor:Red $global:responsebody
Write-Host -BackgroundColor:Black -ForegroundColor:Red "The request body has been saved to `$global:helpme"
break
}

Then, wrap all of your Invoke-RestMethod calls in a try Catch block like this.

try { 
  $e = Invoke-WebRequest 'https://api.us.onelogin.com/api/1/users/$id' `
     -Headers  @{ Authorization = "bearer:$token" } `
     -Body  ( @{ phone = "7709746046" } | ConvertTo-Json ) `
     -Method Put -ErrorAction:Stop -ContentType 'application/json' 
     } 
catch {Failure}

Now when you run into an error, you can see the actual message, like this

> Status: A system exception was caught.
{"status":{"error":true,"code":400,"type":"bad request","message":{"description":"notes is not a valid attribute for user model","attribute":"notes"}}}
The request body has been saved to $global:helpme