Открываю строку URL на новой вкладке, чтобы щелкнуть загружаемое изображение, не удается прочитать строку URL

#c# #selenium

#c# #selenium

Вопрос:

У меня есть метод, при котором я открываю строку URL на новой вкладке TAB 1, которая загружает изображение, а затем я нажимаю на это изображение, что приводит к другой вкладке, которая является моей целевой вкладкой URL 2. Теперь я хочу сохранить этот целевой URL в виде строки. но он по-прежнему сохраняет URL-адрес TAB 1 в строке. Ниже приведен метод, который я написал

 var selecttxt1 = Ad_Search_Direct_Link_Text.GetAttribute("value");
        string getimpression = selecttxt1.Replace("C.ashx", "I.ashx");
        driver.OpenInNewTab(getimpression);
        driver.ClickElement(Click_Impression);
        var aa = driver.Url; 
        Uri uri = new Uri(aa);`enter code here`
        string finallandedurltext = uri.GetComponents(UriComponents.Scheme | UriComponents.Host, UriFormat.UriEscaped);
        driver.Close();
  

Ответ №1:

Вы должны использовать Window Handle при переключении между окнами для доступа к окну.

 var selecttxt1 = Ad_Search_Direct_Link_Text.GetAttribute("value");
        string getimpression = selecttxt1.Replace("C.ashx", "I.ashx");
        driver.OpenInNewTab(getimpression);
        driver.ClickElement(Click_Impression);


        var aa = driver.Url; 
        Uri uri = new Uri(aa);`enter code here`
         string newTabHandle = driver.WindowHandles.Last();
        var newTab = driver.SwitchTo().Window(newTabHandle);
        string finallandedurltext = newTab.GetComponents(UriComponents.Scheme | UriComponents.Host, UriFormat.UriEscaped);
        driver.Close();
  

Надеюсь, это поможет.

Комментарии:

1. Спасибо за вашу помощь, каджал, но это не помогло и выдает исключение — Ошибка CS1061 ‘IWebDriver’ не содержит определения для ‘getComponents’ и не удалось найти метод расширения ‘getComponents’, принимающий первый аргумент типа ‘IWebDriver’ (вам не хватает директивы using или ссылки на сборку?)

2. Я понятия не имею о c #. однако концепция остается прежней. Для доступа к элементу вам нужно переключиться в другое окно. просто попробуйте newTab.curreturl , есть ли у вас такая команда в c #. однако Java у нас есть driver.currenturl

3. вы можете проверить, как переключаться между окнами в c # toolsqa.com/selenium-webdriver/c-sharp /…

4. Спасибо за эту ссылку. Это проясняет, где я был неправ. Теперь это сработало. Я могу прочитать строку нового окна