Xpath con-cat是否可以参考硒中的List <webelement>对象?

时间:2018-08-17 09:57:09

标签: selenium selenium-webdriver

示例场景:

  • 表中有10个不同的行(例如// a [@class ='*******'])。
  • 需要从每一行检索不同的值
  • 使用列表检索它
  • 在给定的示例中,Temp1根据需要执行并进行迭代,因为信息需要从中检索并通过getAttribute(“”)获得。
  • 需要检索Temp2值,该值取决于对象 findList 。 findSubInfo具有来自mainList的关注兄弟姐妹。它是对列表exa。(findList)中的后续兄弟的唯一添加。

问题是:

  • 如果我执行第1条规定,则作为独立节点,它将始终检索第一行的值。 (显而易见)
  • 如果我执行第二条规定,并使用con-cat使用xpath + List对象,则会引发xpath语法问题。

问题: 如何从对象List<WebElement> findList指向的对象同级中检索所有信息?

试用版:

By mainList = By.xpath("//a[@class='*******']");
By findSubInfo = By.xpath("//a[@class='*****']//following::div[@class='****']");

    List<WebElement> findList = driver.findElements(mainList);

        for (WebElement webElement : findList ) {
            if (webElement.isDisplayed()) {

            String temp1= "Info1:" + webElement.getAttribute("ng-href");                    
            String temp2= "Info2: " + driver.findElement(findSubInfo).getText();
            }
        }

OR

String mainList "//a[@class='*******']";
String findSubInfo = "//following::div[@class='****']";

     List<WebElement> findList = driver.findElements(By.xpath(mainList));

        for (WebElement webElement : findList ) {
            if (webElement.isDisplayed()) {

            String temp1= "Info1:" + webElement.getAttribute("ng-href");    
            String temp2= "Info2: " + driver.findElement(By.xpath(webElement + findSubInfo )).getText();
            }
        }

异常详细信息:

  

SyntaxError:无法在“文档”上执行“评估”:字符串   '[[ChromeDriver:XP上的Chrome(3208ef0a2ffd32812c33e159291eebe4)]->   xpath:// a [@ class ='noDecoration   addPointer']] //以下:: div [@ class ='assignedAccountMasterAddress']'   不是有效的XPath表达式。

1 个答案:

答案 0 :(得分:1)

如果要搜索从当前元素(webelement开始具有相关XPath的元素,请尝试

# Note that it should start with the dot
String findSubInfo = "./following::div[@class='****']";
# use webElement.findElement instead of driver.findElement. No XPath concatenations needed
String temp2= "Info2: " + webElement.findElement(By.xpath(findSubInfo)).getText();