我試圖從包含某些 Css 值的 HTML 代碼中獲取每個 ID 并將它們寫入串列中。
我已經可以使用以下方法獲取第一個 ID:
List<string> MyList = new List<string>();
int Count = driver.FindElements(By.TagName("My_Value")).Count;
for(int i=0; i<Count; i )
{
string ID = driver.FindElement(By.CssSelector("div.My_Value")).GetAttribute("id");
MyList.Add(ID);
}
問題是,我總是從 HTML 代碼中獲取第一個 ID,盡管 MyValue 存在于不同的 ID 中。那么我如何告訴程式“跳轉”已經檢查過的值?
uj5u.com熱心網友回復:
代碼看起來不錯,但它沒有運行回圈,正如您所說,它正在查找符合您的條件的第一個元素,然后就完成了。要獲得所有這些,請嘗試:
string ID = driver.FindElements(By.CssSelector("div.My_Value")).GetAttribute("id");
我自己沒試過,但試一試
uj5u.com熱心網友回復:
如果您By.TagName("My_Value")僅使用<My_Value>元素來構建串列,則將收集并放入串列中,即
<My_Value>class="foo bar"...</My_Value>
繼續前進,在回圈內FindElement(By.CssSelector("div.My_Value"))僅將<div>具有class屬性的元素標識為My_Valueie
<div>class="My_Value"...</div>
所以外FindElements()回圈和內回圈FindElement()不匹配。因此,您不會獲得所有值。
解決方案
要遍歷您需要使用的所有收集的串列元素:
string ID = driver.FindElement(By.TagName("My_Value")).GetAttribute("id");
uj5u.com熱心網友回復:
我想到了。
您必須使用 var 變數來保護所有元素。并通過 foreach 回圈獲取 ID。
List<string> MyList = new List<string>();
var ID = driver.FindElement(By.CssSelector("div.My_Value"));
foreach(IWebElement element in ID)
{
element.GetAttribute("id")
MyList.Add(ID);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/364305.html
