如何通过Selenium和Java使用xpath或CSS选择器提取标题属性和文本?

问题描述 投票:0回答:3

从下面的代码中,我想获取文本“ Manager”。第一和第三行包含单词“ Manager”。

<a id="HieararchyDropdownTreePCPPerformanceBusinessUnitIdHierarchyDropdownWidget_3_a" class="level2" treenode_a="" onclick="" target="_blank" style="" title="Manager" xpath="1">
<span id="HieararchyDropdownTreePCPPerformanceBusinessUnitIdHierarchyDropdownWidget_3_ico" title="" treenode_ico="" class="button ico_close" style="width:0px;height:0px;"></span>
<span id="HieararchyDropdownTreePCPPerformanceBusinessUnitIdHierarchyDropdownWidget_3_span" class="node_name">Manager</span>
</a>

我尝试了以下3个xpath,但都没有给出文本“ Manager”。

(xpath ="//span[@id='HieararchyDropdownTreePCPPerformanceBusinessUnitIdHierarchyDropdownWidget_3_span']/text())
(xpath ="//*[@id=\"HieararchyDropdownTreePCPPerformanceBusinessUnitIdHierarchyDropdownWidget_3_a\"]")
(xpath ="//span[@id='HieararchyDropdownTreePCPPerformanceBusinessUnitIdHierarchyDropdownWidget_3_span']")

也希望从下面的代码中获取单词“ Employees”。

<input id="HieararchyDropdownMenu" class="selectedHierarchyValue" type="text" readonly="" value="Employees" xpath="1">

任何帮助将不胜感激。

selenium xpath css-selectors webdriverwait expected-condition
3个回答
2
投票

要获取title管理员,请尝试此。

String title=driver.findElement(By.xpath("//a[@class='level2']")).getAttribute("title");
System.out.println(title);

要获取text管理器,请尝试以下xpath。

String text=driver.findElement(By.xpath("//a[@class='level2' and contains(@title , 'Manager')]//span[@class='node_name']")).getText();
System.out.println(text);

要获取员工,您需要使用getAttribute(“ attributename”)

String idval=driver.findElement(By.id("HieararchyDropdownMenu")).getAttribute("value");
System.out.println(idval);

0
投票

如上所述,您可以按照打印的代码在IDE中运行它。

为了使您可以在DOM中找到元素,可以尝试以下操作。

CSS隔离符:

要从标题中获取文本管理器:

$$('[id="HieararchyDropdownTreePCPPerformanceBusinessUnitIdHierarchyDropdownWidget_3_a"]').pop().getAttribute("title");

要获取内容管理器:

$$('[id="HieararchyDropdownTreePCPPerformanceBusinessUnitIdHierarchyDropdownWidget_3_span"]').pop().textContent;

要获取文本雇员:

CSS隔离符:

$$('[id="HieararchyDropdownMenu"]').pop().getAttribute("value");

0
投票

要提取标题 管理器和文本管理器,您需要为visibilityOfElementLocated()引入WebDriverWait,并且可以使用以下任何一个Locator Strategies:] >

  • 标题

    管理员:
    • 使用cssSelector

      System.out.println(new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("a.level2[id^='HieararchyDropdownTreePCPPerformanceBusinessUnitIdHierarchyDropdownWidget_']"))).getAttribute("title"));
      
    • 使用xpath

    System.out.println(new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//a[@class='level2' and starts-with(@id, 'HieararchyDropdownTreePCPPerformanceBusinessUnitIdHierarchyDropdownWidget_')]"))).getAttribute("title"));
    
  • 文本

  • 管理员:
    • 使用cssSelectorgetText()

      System.out.println(new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("a.level2[id^='HieararchyDropdownTreePCPPerformanceBusinessUnitIdHierarchyDropdownWidget_'] span.node_name[id^='HieararchyDropdownTreePCPPerformanceBusinessUnitIdHierarchyDropdownWidget_']"))).getText());
      
    • 使用xpathgetAttribute()

    System.out.println(new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//a[@class='level2' and starts-with(@id, 'HieararchyDropdownTreePCPPerformanceBusinessUnitIdHierarchyDropdownWidget_')]//span[@class='node_name' and starts-with(@id, 'HieararchyDropdownTreePCPPerformanceBusinessUnitIdHierarchyDropdownWidget_')]"))).getAttribute("innerHTML"));
    
    © www.soinside.com 2019 - 2024. All rights reserved.