elu*_*lur 4 selenium xpath dynamic count
我是Selenium的新人,新来的,我的英语不是最好的.
我正在使用selenium和.NET ...
我有一个像这样的HTML页面,但事件的数量是不同的:
<div id="eventContent" style="text-align: center;">
<div class="event" id="event-8971062">
<ul>
<li ...></li>
<li ...></li>
<li ...></li>
</ul>
</div>
<div class="event odd" id="event-9224880">
<ul>
<li ...></li>
<li ...></li>
<li ...></li>
</ul>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
我需要检查不同div中的所有数据,但计数是动态的,而(事件)id也是动态的.我试图找出div的计数,但这不起作用.为此我试试这个:
DefaultSelenium selenium = new DefaultSelenium(...);
decimal count = selenium.GetXpathCount("//div[@id='eventContent']");
Run Code Online (Sandbox Code Playgroud)
但是这个结果只带来1而不是两个.
当我尝试:
Console.WriteLine(selenium.GetText("//div[@id='eventContent'][1]"));
Run Code Online (Sandbox Code Playgroud)
它会打印所有div,但是当我这样做时:
Console.WriteLine(selenium.GetText("//div[@id='eventContent'][1]/div"));
Run Code Online (Sandbox Code Playgroud)
它只打印第一个div,我不明白为什么.有人可以这么善良,并告诉我这里发生什么,我错了吗?
在此先感谢elur
decimal count = selenium.GetXpathCount("//div[@id='eventContent']");
Run Code Online (Sandbox Code Playgroud)
这将返回的数量div有一个s id的eventContent-只有一个div这样的,这就是为什么你得到的1计数(计数变量通常是int做得相当不是decimalS,顺便说一句).
如果您想要包含 div s 的计数,请使用
int count = selenium.GetXpathCount("//div[@id='eventContent']/div");
Run Code Online (Sandbox Code Playgroud)
这将计数的数div 孩子的div用id的eventContent.这应该根据需要返回2.
至于你的GetText例子,我认为GetText只会返回xpath参数选择的第一个节点的文本.所以
selenium.GetText("//div[@id='eventContent'][1]")
Run Code Online (Sandbox Code Playgroud)
你得到父母 的整个文本div,它自然包含所有的孩子div,但是
selenium.GetText("//div[@id='eventContent'][1]/div")
Run Code Online (Sandbox Code Playgroud)
你只得到第一个孩子的文字div.我相信div,这个xpath选择所有的子节点,但GetText只对单个元素进行操作.如果你想div依次检查每个孩子的文本,你需要先得到孩子div的计数,然后用for循环来依次得到每个孩子:
for(int i = 1; i <= count; ++i)
{
string childXpath = "//div[@id='eventContent']/div[" + i + "]";
string eventText = selenium.GetText(childXpath);
// Processing of eventText
}
Run Code Online (Sandbox Code Playgroud)
一个for都是必须的循环和手动的XPath处理(而不是整洁foreach),我相信硒没有采取一个XPath和返回元素集合的方式.
| 归档时间: |
|
| 查看次数: |
12818 次 |
| 最近记录: |