我无法从搜索结果列表中检索第二搜索结果的标题属性文本

时间:2017-08-08 12:52:51

标签: selenium selenium-webdriver selenium-chromedriver

我正试图从以下代码集中获取标题文本“Interactions / Rant& Rave Survey Scores / CSS Call Volumes”:

Project::with('users')->has('users')->get();

代码:

{{1}}

我想要检索的是标题文本“Interactions / Rant& Rave Survey Scores / CSS Call Volumes”,这是第二个搜索结果。但是我从第一个结果中得到了标题。

我在想,因为我正在使用搜索结果找到下一个元素,它应该一次只能保存一个搜索项目,但这不是这里的情况。

请建议。

4 个答案:

答案 0 :(得分:0)

/在java中有一个特殊的引用。可能是它引起了问题。

我没试过,但尝试下面的代码,它可能会有所帮助:

String test[];
List<WebElement> searchResults = driver.findElements(By.xpath("//div[@id='$searchResults_children']/div"));

for (WebElement searchResult : searchResults)
{
    String item = searchResult.getText();
    WebElement tooltip =searchResult.findElement(By.xpath("//div[@class='treeNode']/span/span"));
    test = tooltip.getText().split("/");
    for (String searchResult1 : test) 
    {

        System.out.println(searchResult);
    }
    String tooltipName = tooltip.getAttribute("title");
    System.out.println("Mertic: "+item+", Tooltip: "+tooltipName);
}

答案 1 :(得分:0)

试试这个

WebElement tooltip =searchResult.findElement(By.xpath("/div[@class='treeNode']/span/span"));

因为您正在寻找直接孩子div/div/span/span

你还需要遍历外部元素“div”的所有元素/子元素吗?如果没有那么你可以使用hirarchy与所有元素直到跨度(如果将来没有改变这个hirarchy的风险)

答案 2 :(得分:0)

您希望获得此元素的title属性

<span id="$InteractionsAHT Call FactsTransfer Attempts_details" class="treeNodeDetails" title="Interactions/Inbound Call Facts/AHT Call Facts">

它有一个ID,因此我们可以使用它来定位它,然后提取title属性。

driver.findElement(By.cssSelector("span[id$='Attempts_details']")).getAttribute("title");

此定位器会查找具有以(SPAN$结尾的ID的Attempts_details。我们可以只指定整个ID,但它很长,这个子字符串是唯一的,至少对于提供的HTML。

我假设你得到了错误的元素,因此标题不完整。我猜这与将它写入控制台有关?它应该起作用,因为正斜杠没有特别的意义。您是否尝试将其写入文本文件或在该行上设置断点并查看变量包含的内容?

答案 3 :(得分:0)

正如您在评论中提到的,the id $searchResults_children is static for any search result以下代码块将从所需节点检索文本交互/入站呼叫事实/ AHT呼叫事实

String my_string = driver.findElement(By.xpath("//div[@id='$searchResults_children']/div[@class='treeNode'][contains(@id, 'FactsTransfer Attempts')]/span[@class='masterTreeLine treeLine']//span[@class='treeNodeDetails']")).getAttribute("title");
System.out.println(my_string);