我正在尝试使用c#和Selenium Webdriver为内部企业网站编写自动smoketest。
问题是该网站是使用大量Dojo Javascript动态生成的。它还包含框架和弹出窗口。 O_O
因此,每次加载页面时,普通元素属性都是随机的,并且永远不会一致。
订单也是随机的。
唯一已知的常量是这些标记中包含的INNER文本。
示例1(初始页面加载):
<div id="23">
<span id="Random40">KNOWN TEXT ONE</span>
<span id="Random41">KNOWN TEXT TWO</span>
<span id="Random42">KNOWN TEXT THREE</span>
</div>
示例2(后续页面加载):
<div id="Random 11">
<span id="Random45">KNOWN TEXT THREE</span>
<span id="Random46">KNOWN TEXT ONE</span>
<span id="Random43">KNOWN TEXT TWO</span>
</div>
正如您在上面的示例中所看到的那样:
随着一切被随机化并且顺序改变我如何以编程方式解析DOM,找到文本值,然后确定XPath一旦找到?
答案 0 :(得分:0)
答案 1 :(得分:0)
driver.findelement(By.cssseector( “DIV:firt胎”))。依序按一下();
它将选择第一个元素 例如:它会选择'KNOWN TEXT ONE'
答案 2 :(得分:0)
//div[./span[contains(text(), 'KNOWN TEXT ONE')]][./span[contains(text(), 'KNOWN TEXT TWO')]][./span[contains(text(), 'KNOWN TEXT THREE')]]
如果您要在帧之间导航,则需要先切换到包含节点的帧,然后才能看到它们。切换到帧后,您还需要进行短暂睡眠或隐式等待,因为Selenium不会等待实际的帧切换发生。
driver.SwitchTo().Frame("Frame Name");
Thread.Sleep(100);