代码之家  ›  专栏  ›  技术社区  ›  Jaydeep Karena

抓取用angular2+构建的网站-无法点击

  •  1
  • Jaydeep Karena  · 技术社区  · 7 年前

    我想使用 c# ,网站是用 angular2+ . 我在点击按钮、链接等方面取得了一些成功。 我正在winform应用程序中进行精简,并使用 browserObject .

    我的问题是:

    在一个地方,我必须从下拉列表中选择一个选项&fire click事件。 我成功地在下拉菜单中设置了值,但我无法单击

    我正在使用以下代码:

       var select = browser.Document.GetElementsByTagName("select");
    
       var foundGIAXXXN = false;
       foreach (HtmlElement s in select)
       {
           if (s.GetAttribute("ng-model") == "savedSearchModel")
           {
               var options = s.Children;
               int optionIndex = -1;
               foreach (HtmlElement o in s.Children)
               {
                   optionIndex++;
                   if (o.InnerText == "GIAGGGVST")
                   {
                       s.Children[optionIndex].SetAttribute("selected", "selected");
                       //o.SetAttribute("selected", "selected");
                       s.SetAttribute("class", "ng-valid ng-touched ng-not-empty ng-dirty ng-valid-parse");
                       foundGIAXXXN = true;
                       break;
                   }
               }
           }
    
           if (foundGIAXXXN)
               break;
       }
    
       await Sleep(2);
    
    
       foreach (HtmlElement b in browser.Document.GetElementsByTagName("button"))
       {
           if (b.GetAttribute("ng-click") == "vm.getSavedFilterBySaveID(savedSearchModel); isLoadSavedOpen = false;")
           {
               b.InvokeMember("click");
           }
       }
    
    1 回复  |  直到 4 年前
        1
  •  0
  •   Jaydeep Karena    7 年前

    我得出的结论是,我们不能使用 C# WebBrowser 类以废弃使用 angular2+ 或者说这很难做到,因为 angular 在用户交互之间添加了许多我们无法在其中执行的类 C# .

    现在,我正在使用该网站提供的API,这是从该网站获取数据的最佳方式。

    注: 不要试图废弃使用创建的网站 有棱角的 使用 C#网络浏览器