1
私の心配は、要素を選択するだけで動的にXPathを生成できるかどうかです。そのため、WebサイトのHTMLファイルで定期的に行われる更新について心配する必要はありません。 毎回手動でXPathを生成する必要がない、この問題の代替手段として機能する考えを自由に残してください。特定の要素に対してXPathを与えるコードを書くことは可能ですか?
私の心配は、要素を選択するだけで動的にXPathを生成できるかどうかです。そのため、WebサイトのHTMLファイルで定期的に行われる更新について心配する必要はありません。 毎回手動でXPathを生成する必要がない、この問題の代替手段として機能する考えを自由に残してください。特定の要素に対してXPathを与えるコードを書くことは可能ですか?
はい、私はこの問題を正確に記述しました。
私の状況は:ページのどこかにある要素をチェックする必要がありましたが、時々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をトリミングします。あなたはこれをもちろん外にすることができます。