【发布时间】:2019-05-08 01:09:00
【问题描述】:
编辑:不确定它是否真的有助于解决这个问题,但这是基于 Sharepoint 的。
我有一个 Webdriver 找不到的带有特殊字符的元素。
var element = wait.Until(x => x.FindElement(By.Id("Tasrit_6aecdca9-e3b9-4141-ae36-d537784f9592_$TextField_inplacerte")));
element.SendKeys("foo");
我猜是$ 导致了问题。
相反,我是通过使用找到的:
var element = wait.Until(x => x.FindElements(By.CssSelector("div[id*='Tasrit_6aecdca9-e3b9-4141-ae36-d537784f9592']")));
element[2].FindElement(By.TagName("p")).SendKeys("foo");
测试以这种方式通过(看似),但值并没有真正发送到现场。
不幸的是,元素的层次结构中没有input 标记,当手动插入文本时,我可以看到该值已插入到<p> 标记中。但是,如图所示,当使用 <p> 标签时,它并没有真正的帮助。
HTML:
<div class="ms-rtestate-write ms-rteflags-0 ms-rtestate-field" id="Tasrit_6aecdca9-e3b9-4141-ae36-d537784f9592_$TextField_inplacerte" role="textbox" aria-haspopup="true" aria-labelledby="Tasrit_6aecdca9-e3b9-4141-ae36-d537784f9592_$TextField_inplacerte_label" style="min-height: 84px;" contenteditable="true" aria-autocomplete="both" aria-multiline="true" RteDirty="true">
<p>
<span id="ms-rterangecursor-start" RteNodeId="1"></span>
<span id="ms-rterangecursor-end"></span>
</p>
</div>
【问题讨论】:
-
使用基于文本的相关 HTML 更新问题
-
检查多余的空间,见下文。
-
这个 ID 似乎是动态的。你有 3 个这样的 ID?
-
是的。我应该感谢 Microsoft Dynamics CRM :) ..但在这种情况下,它只是看起来是动态的,它不是。每次我跑步时它都保持不变。无论如何,当我使用 id* (contains) 时也会发生这种情况
-
如果您将文本发送给父
<div>会发生什么?
标签: c# selenium selenium-webdriver xpath css-selectors