如何使用 java 从 selenium webdriver 中的以下代码中获取值
<script id="metamorph-0-start" type="text/x-placeholder"/>
test@gmail.com
<script id="metamorph-0-end" type="text/x-placeholder"/>
我可能很想回答:
String email = driver.findElement(By.xpath("id('metamorph-0-start')/..')")).getText();
但这只有在没有其他文本兄弟/后代的情况下才有效。
我将假设一些事情,一个是您的 html 实际上是:
<script id="metamorph-0-start" type="text/x-placeholder"></script>
test@gmail.com
<script id="metamorph-0-end" type="text/x-placeholder"></script>
要真正收到电子邮件,我会使用 Javascript 执行此操作:
String email = (String) ((JavascriptExecutor)driver).executeScript(
"return arguments[0].nextSibling.textContent.split('\\n')[1]",
driver.findElement(By.id("metamorph-0-start")));
您也可以在 Java 中而不是在 Javascript 中进行换行符剥离。
如果没有更多关于页面(或包含元素)的知识,我认为 TunaBum 有最好的答案。
也就是说,基于这是页面上唯一的电子邮件地址(或者更确切地说是带有 at-sign int 的文本)的假设,您可以这样做
String email = driver.findElement(By.xpath("//*[contains(text(),'@')]")).getText();
获取@
在其文本中包含 a 的元素的文本。
如果您的包含元素中有多个metamorph-number-start/end
,并且每个都包含一些文本,那么 JS 是您唯一的路径,因为WebDriver
还不能使用文本节点。