[C#/Selenium] IWebDriver.ExecuteJavascript 캐스팅이 잘못됐다는 에러가 뜰 경우
아주 간단한 디버그로 원인 파악 및 해결이 가능합니다. 우선, 아래와 같은 코드가 있습니다. public static int GetPageOfSomePage(this IWebDriver driver) { return driver.ExecuteJavascript<int>(@" if (typeof(page) === 'undefined') return 0; return page.current; "); } 얼핏 봐서는 정상 작동할 것 같이 생겼지만, 런타임에 WebDriverException, 결과값은 리턴됐으나 캐스팅이 잘못됐다는 에러 를 뿜게 되죠.. 일단 에러 설명에 결과값은 리턴됐다고 하므로, 디버그를 해 봅시다. public static object GetPageOfSomePage(this IWebDriver driver) { var obj = driver.ExecuteJavascript<object>(@" if (typeof(page) === 'undefined') return 0; return page.current; "); Debug.WriteLine(obj.GetType()); return obj; } 이제 런타임에 출력 창을 보면, System.Int64 또는 값에 따라서 System.Float, System.Double 등등이 보일 겁니다. 저 같은 경우는, System.Int64였죠. 캐스팅해야할 타입을 디버그로 알아냈으니 그대로 적용합니다. public static long GetPageOfSomePage(this IWebDriver driver) { return driver.ExecuteJavascript<long>(@" if (typeof(page) === 'undefine...