0

I have the following XAML code:

 <DataGridHyperlinkColumn TargetName="{Binding Path=UriLink}" Header="On Line Source" x:Name="OnLineSource" IsReadOnly="True">
                            <DataGridHyperlinkColumn.ElementStyle>
                                <Style TargetType="TextBlock">
                                    <EventSetter Event="Hyperlink.Click" Handler="OnHyperlinkClick" />
                                </Style>
                            </DataGridHyperlinkColumn.ElementStyle>
                        </DataGridHyperlinkColumn>

C#

public void OnHyperlinkClick(object sender, RoutedEventArgs e)
    {
        IWebDriver webDriverProfile;
        webDriverProfile = new ChromeDriver();
        var destination = ((Hyperlink)e.OriginalSource).NavigateUri;

        webDriverProfile.Navigate().GoToUrl(destination.ToString());
        Thread.Sleep(60000);

        webDriverProfile.Quit();

    }

The problem is that after 60 seconds the browser is closing and it can be uncomfortable for the user. Could you please help me to find a solution so that link in the DataGridHyperlinkColumn open a page that is not closing after a specified time?

I've tried the code from here: Handle DataGridHyperlinkColumn Click Event

But I have the following error:

System.ComponentModel.Win32Exception HResult=0x80004005 Message=The system cannot find the file specified. Source=System.Diagnostics.Process StackTrace: at System.Diagnostics.Process.StartWithCreateProcess(ProcessStartInfo startInfo) at System.Diagnostics.Process.Start() at System.Diagnostics.Process.Start(ProcessStartInfo startInfo) at System.Diagnostics.Process.Start(String fileName) at App1.MainWindow.OnHyperlinkClick(Object sender, RoutedEventArgs e) in D:\Apps..\App1\App1\MainWindow.xaml.cs:line 291 at System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised) at System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args) at System.Windows.ContentElement.RaiseEvent(RoutedEventArgs e) at System.Windows.Documents.Hyperlink.OnClick() at System.Windows.Documents.Hyperlink.DispatchNavigation(Object sender) at System.Windows.Documents.Hyperlink.OnMouseLeftButtonUp(Object sender, MouseButtonEventArgs e) at System.Windows.Documents.Hyperlink.OnMouseLeftButtonUp(MouseButtonEventArgs e) at System.Windows.UIElement.OnMouseLeftButtonUpThunk(Object sender, MouseButtonEventArgs e) at System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target) at System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised) at System.Windows.UIElement.ReRaiseEventAs(DependencyObject sender, RoutedEventArgs args, RoutedEvent newEvent) at System.Windows.UIElement.OnMouseUpThunk(Object sender, MouseButtonEventArgs e) at System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target) at System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised) at System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args) at System.Windows.ContentElement.RaiseTrustedEvent(RoutedEventArgs args) at System.Windows.Input.InputManager.ProcessStagingArea() at System.Windows.Input.InputProviderSite.ReportInput(InputReport inputReport) at System.Windows.Interop.HwndMouseInputProvider.ReportInput(IntPtr hwnd, InputMode mode, Int32 timestamp, RawMouseActions actions, Int32 x, Int32 y, Int32 wheel) at System.Windows.Interop.HwndMouseInputProvider.FilterMessage(IntPtr hwnd, WindowMessage msg, IntPtr wParam, IntPtr lParam, Boolean& handled) at System.Windows.Interop.HwndSource.InputFilterMessage(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled) at MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled) at MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o) at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs) at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler) at System.Windows.Threading.Dispatcher.LegacyInvokeImpl(DispatcherPriority priority, TimeSpan timeout, Delegate method, Object args, Int32 numArgs) at MS.Win32.HwndSubclass.SubclassWndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam) at MS.Win32.UnsafeNativeMethods.DispatchMessage(MSG& msg) at System.Windows.Threading.Dispatcher.PushFrameImpl(DispatcherFrame frame) at System.Windows.Threading.Dispatcher.PushFrame(DispatcherFrame frame) at System.Windows.Threading.Dispatcher.Run() at System.Windows.Application.RunDispatcher(Object ignore) at System.Windows.Application.RunInternal(Window window) at System.Windows.Application.Run() at App1.App.Main()"

Maybe is something that I am missing in the code from the above link.

Please help.

Thank you in advance!

BionicCode
  • 1
  • 4
  • 28
  • 44
Ioan Cucu
  • 13
  • 5
  • You start your Chrome session, then wait for 60 seconds and then obviously closing the session by calling `webDriverProfile.Quit();`. You quit the session yourself. Regarding your exception: obviously your path to the executable is wrong. To get the correct file path, lookup the executable using the Windows Explorer. Then press _Shift_ and right click on the file. From the context menu select _Copy as path_. Paste the path to your application. Please, next time post the code (at least the method) that leads to the exception and point to the line of code which actually throws it. – BionicCode Apr 21 '20 at 10:39
  • @BionicCode Thank you for your suggestions! Indeed, after I deleted the line webDriverProfile.Quit(); it worked. – Ioan Cucu Apr 21 '20 at 10:59
  • @BionicCode You should post that as the answer and get it accepted. – Keith Stein May 01 '20 at 22:31

0 Answers0