我是在C#中使用Selenium的初学者。我正在尝试从UL清单中获取价值。这是HTML代码。
<div class="reg-field__popup">
<div class="form__popup-error form__popup-text" data-t="login-error" role="alert">
<div class="form__login-suggest">
<strong class="suggest__status-text error-message">You must select a username</strong>
<div>
<div class="suggest__logins">
<strong class="suggest__status-text" tabindex="4">Available usernames</strong>
<ul class="logins__list">
<li class="registration__pseudo-link">
<label for="lill1an.amir" tabindex="0" title="lill1an.amir" data-login="lill1an.amir">
<input type="radio" id="lill1an.amir" value="on"><!-- react-text: 1218 -->lill1an.amir<!-- /react-text -->
</label>
</li>
<li class="registration__pseudo-link">
<label for="lilli4n.a" tabindex="0" title="lilli4n.a" data-login="lilli4n.a">
<input type="radio" id="lilli4n.a" value="on"><!-- react-text: 1222 -->lilli4n.a<!-- /react-text -->
</label>
</li>
我需要获取标签的值。结果将为lill1an.amir
,lilli4n.a
答案 0 :(得分:1)
var labels = driver.FindElements(By.Xpath("//*[contains(@class, 'logins__list')/li]"))
for (int a = 0; a < labels.Count; a++) {
Console.WriteLine(labels[a].FindElement(By.Xpath("./label")).GetAttribute("for"))
}
编辑:
这也应该起作用(感谢Moshe Slavin):
for (int a = 0; a < labels.Count; a++) {
Console.WriteLine(labels[a].FindElement(By.Xpath("./label/input")).GetAttribute("value")) # or GetAttribute("innerHTML")
}
答案 1 :(得分:0)
使用:
var ulList = driver.FindElements(By.Xpath('//ul[@class="logins__list"]'))
然后在for循环中使用GetAttribute("value")
...
希望这对您有帮助!
答案 2 :(得分:0)
根据从<label>
中提取所需文本(即 lill1an.amir , lilli4n.a )的HTML,您可以使用以下解决方案:>
labels = driver.FindElements(By.XPath("//ul[@class='logins__list']//li/label"))
foreach (IWebElement label in labels)
{
string my_text = field.GetAttribute("for");
Console.WriteLine(my_text);
}