从Google Chrome中检查元素:
<div class="form-style-abc">
<fieldset>
<legend><span class="number">*</span>Search Zone</legend>
需要检索&#34;搜索区域&#34;但是我无法执行搜索和getText()
我在Eclipse上执行了以下操作,但收到错误:
代码:
String HeaderTxt = driver.findElement(By.xpath("//span[@class = 'number']")).getText();
System.out.println(HeaderTxt);
错误消息:
org.openqa.selenium.NoSuchElementException:没有这样的元素:无法找到元素:{&#34;方法&#34;:&#34; xpath&#34;,&#34;选择器&#34;:&# 34; // span [@class =&#39; number&#39;]&#34;}
答案 0 :(得分:1)
根据您提供的 HTML 提取文字搜索区域,您可以使用以下代码行:
String HeaderTxt = driver.findElement(By.xpath("//div[@class='form-style-abc']/fieldset/legend[(self::legend) and not (@class='number')]")).getText();
System.out.println(HeaderTxt);
根据您的评论更新,您仍然可以看到 NoSuchElementException ,您可能需要等待导致 WebDriverWait 的元素,如下所示:
WebElement HeaderTxtElem = new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//div[@class='form-style-abc']/fieldset/legend[(self::legend) and not (@class='number')]")));
System.out.println(HeaderTxtElem.getText());
正如您所提到的,该元素位于<iframe>
标记内,您需要切换到完整的框架,然后注意 WebElement 。在这里,您可以找到关于How to switch to frame in Selenium Webdriver Java
通过 xpath 作为"//div[@class='form-style-abc']/fieldset/legend"
,我们已经到达<legend>
节点。现在,您只想获取文本搜索区域。因此,在<legend>
代码中,您必须修剪类为数字的子<span>
标记。所以我们在 xpath 而不是中添加了一个子句来考虑(@ class ='number'),同时检索文本:
String HeaderTxt = driver.findElement(By.xpath("//div[@class='form-style-abc']/fieldset/legend[(self::legend) and not (@class='number')]")).getText();