Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用xpath在WebDriver中选择元素_Xpath_Webdriver - Fatal编程技术网

使用xpath在WebDriver中选择元素

使用xpath在WebDriver中选择元素,xpath,webdriver,Xpath,Webdriver,如何仅选择父span webelement而不选择子span webelement List summaryLinks=summary.findElements(By.xpath(“”) 我的HTML代码: <li> <div class="mod-indent mod-indent-2"> <a href="http://mysite.com"> <img class="activityicon" alt="URL" src="http://mysit

如何仅选择父span webelement而不选择子span webelement

List summaryLinks=summary.findElements(By.xpath(“”)

我的HTML代码:

<li>
<div class="mod-indent mod-indent-2">
<a href="http://mysite.com">
<img class="activityicon" alt="URL" src="http://mysite.com">
<span class="instancename">LinkText <span class="accesshide "> URL</span></span>
</a>
</div>
</li>
  • 我尝试了以下XPath,但没有成功
    .//div[@class='mod-indent-mod-indent-2']/a/span[@class='instancename']

    .//div[@class='mod-indent mod-indent-2']/a/span[1]

    .//div[@class='mod-indent mod-indent-2']/a/span/

    .//div[@class='mod-indent mod-indent-2']/a/span[position()=1]


    .//div[@class='mod-indent mod-indent-2']/a/span/span[position()=1]

    有多种方式,但只有几种:

    By.XPath("//div[contains(@class, 'mod-indent-2')]/descendant::span[@class='instancename']");
    
    By.XPath("//span[@class='instancename']");
    
    By.XPath("//span[@class='accesshide ']/..");
    
    By.ClassName("instancename");
    
    By.CssSelector("span.instancename");
    
    By.XPath("//span[text()='Link Text']");
    

    多种方式,但只有少数几种:

    By.XPath("//div[contains(@class, 'mod-indent-2')]/descendant::span[@class='instancename']");
    
    By.XPath("//span[@class='instancename']");
    
    By.XPath("//span[@class='accesshide ']/..");
    
    By.ClassName("instancename");
    
    By.CssSelector("span.instancename");
    
    By.XPath("//span[text()='Link Text']");
    
    网络驱动程序代码:

    List <WebElement> summaryLinks = 
    summary.findElements(By.cssSelector("span.instancename")); 
    List <String> links = new ArrayList <String> (); 
    for (int i=0; i<summaryLinks.size(); i++){ 
            WebElement element =summaryLinks.get(i); 
             if (element.isDisplayed() && element.isEnabled()){ 
             String str  = element.getText(); 
             links.add(str);}} 
    System.out.println(links); 
    
    现在,当我返回
    links.size()
    时,它将返回正确的 元素(即仅包括父跨度)

    我不确定这是否只是一个打印退货问题。我试过了
    trim()
    toString()
    ,然后将
    getText()的返回添加到链接中
    但其结果是相同的。

    网络驱动程序代码:

    List <WebElement> summaryLinks = 
    summary.findElements(By.cssSelector("span.instancename")); 
    List <String> links = new ArrayList <String> (); 
    for (int i=0; i<summaryLinks.size(); i++){ 
            WebElement element =summaryLinks.get(i); 
             if (element.isDisplayed() && element.isEnabled()){ 
             String str  = element.getText(); 
             links.add(str);}} 
    System.out.println(links); 
    
    现在,当我返回
    links.size()
    时,它将返回正确的 元素(即仅包括父跨度)

    我不确定这是否只是一个打印退货问题。我试过了
    trim()
    toString()
    ,然后将
    getText()的返回添加到链接中
    
    但是结果是一样的。

    我一直在尝试从嵌套的span元素中获取链接文本,以便迭代并单击这些链接。但是,使用getText()将返回插入新行的两个跨度中的文本。我似乎不明白为什么通过CSS隐藏子元素时会打印奇怪的结果。我一直在尝试从嵌套的span元素获取链接文本,以便可以迭代并单击这些链接。但是,使用getText()将返回插入新行的两个跨度中的文本。我似乎不明白为什么通过CSS隐藏子元素时会打印奇怪的结果。使用“\n”找到新行的索引并返回不包括该子字符串的子字符串,它工作正常使用“\n”找到新行的索引并返回不包括该子字符串的子字符串,工作正常