2016-09-30 6 views

答えて

0

はい、私はこの問題を正確に記述しました。

私の状況は:ページのどこかにある要素をチェックする必要がありましたが、時々XPathが変更されました。すべての要素がテーブル内にあるので、私が知る必要があったのは最初の要素のXPathだけであり、他の要素が存在するかどうかを確認するために1行おきにチェックします。

私だけのコードのこの部分で

 public void UserGetsXPathOfElement(string element){ 
     string PageSource = Driver.PageSource; 
     var doc = new HtmlAgilityPack.HtmlDocument(); 
     doc.LoadHtml(PageSource); 

     var decs = doc.DocumentNode.Descendants().ToList(); 
     var targetEl = decs.FirstOrDefault(c => c.InnerText.Trim() == element && c.Name == "td"); 
     var newXpath = targetEl.XPath; 

     var regex = new Regex(@"tr\[\d+\]"); 
     newXpath = regex.Replace(newXpath, @"tr[{0}]"); 

     ScenarioContext.Current["xpath"] = newXpath; 
    } 

を使用し、私はScenarioContextにおける変数のXPath VARを送信し、私はまた、TDまでに私のXPathをトリミングします。あなたはこれをもちろん外にすることができます。

関連する問題