Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.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提取文本并断言文本-Selenium/Java_Java_Selenium_Selenium Webdriver - Fatal编程技术网

从多个xpath提取文本并断言文本-Selenium/Java

从多个xpath提取文本并断言文本-Selenium/Java,java,selenium,selenium-webdriver,Java,Selenium,Selenium Webdriver,我需要在元素中找到文本并断言它是否与我所需的结果匹配 问题是,页面中可以有n个1-100之间的元素。因此,我无法获取所有这些元素的xpath,然后在其中断言文本 xpath如下所示:(从第一个元素开始) 如何循环使用这些xpath并为文本断言 在参考了几篇文章之后,我尝试了下面的方法,但它确实没有帮助 private static WebElement element = null; private static List<WebElement> elements = nul

我需要在元素中找到文本并断言它是否与我所需的结果匹配

问题是,页面中可以有n个1-100之间的元素。因此,我无法获取所有这些元素的xpath,然后在其中断言文本

xpath如下所示:(从第一个元素开始)

如何循环使用这些xpath并为文本断言

在参考了几篇文章之后,我尝试了下面的方法,但它确实没有帮助

private static WebElement element = null;
    private static List<WebElement> elements = null;

public WebElement test() throws Exception {
    elements = driver.findElements(By.xpath("(//DIV[@class='issues-list-item clearfix'])[1]"));
    for (WebElement element : elements) {

        List<WebElement> TE = element.findElements(By.xpath("(//DIV[@class='issues-list-item clearfix'])[1]"));


        if (TE.size() > 0) {

            String myText = TE.get(0).getText();
            if (myText.contains("High")) {
                return element;
            }
        }
    }

    return null;
private静态WebElement=null;
私有静态列表元素=null;
公共WebElement test()引发异常{
elements=driver.findElements(By.xpath(“(//DIV[@class='issues-list-item clearfix'])[1]”);
for(WebElement:elements){
List TE=element.findElements(By.xpath(“(//DIV[@class='issues-List-item clearfix'])[1]”);
如果(TE.size()>0){
字符串myText=TE.get(0.getText();
if(myText.contains(“高”)){
返回元素;
}
}
}
返回null;

/DIV[@class='issues-list-item clearfix'])[1]
您的查询是错误的。末尾的[1]表示它将从与之前的查询匹配的所有项目中只选择第一个项目,也就是说,您将只与第一个项目进行比较。您不需要第二个查询,不需要检查if大小(可选地在for循环之前)

//DIV[@class='issues-list-item clearfix'])[1]
您的查询是错误的。末尾的[1]表示它将从与之前的查询匹配的所有项目中只选择第一个项目,也就是说,您将只与第一个项目进行比较。您不需要第二个查询,而不需要检查if的大小(可选地在for循环之前)您可以尝试以下方法:

public List<WebElement> test() throws Exception {
        List<WebElement> TE  = new ArrayList<WebElement>();
         elements = driver.findElements(By.xpath("(//DIV[@class='issues-list-item clearfix'])"));
            for (WebElement element : elements) {
                if(element.getText().contains("High")) {
                       TE.add(element);
                }
            }
            return TE;
    }
public List test()引发异常{
List TE=new ArrayList();
elements=driver.findElements(By.xpath((//DIV[@class='issues-list-item clearfix']));
for(WebElement:elements){
if(element.getText()包含(“高”)){
添加(元素);
}
}
返回TE;
}
请注意,它将返回一个列表web元素,其中包含作为文本的
High

您可以尝试以下操作:

public List<WebElement> test() throws Exception {
        List<WebElement> TE  = new ArrayList<WebElement>();
         elements = driver.findElements(By.xpath("(//DIV[@class='issues-list-item clearfix'])"));
            for (WebElement element : elements) {
                if(element.getText().contains("High")) {
                       TE.add(element);
                }
            }
            return TE;
    }
public List test()引发异常{
List TE=new ArrayList();
elements=driver.findElements(By.xpath((//DIV[@class='issues-list-item clearfix']));
for(WebElement:elements){
if(element.getText()包含(“高”)){
添加(元素);
}
}
返回TE;
}

请注意,它将返回一个列表web元素,其中包含作为文本的
High

更有效的方法是添加“High”复选框到定位器。这样你就不必在所有元素之间循环,只找到你想要的元素。定位器可以更快地为你完成所有工作。代码也少得多

public List<WebElement> test() throws Exception {
     return driver.findElements(By.xpath("(//DIV[@class='issues-list-item clearfix'][contains(.,'High')])"));
}

更有效的方法是将“High”检查添加到定位器中。这样,您就不必在所有元素中循环查找您想要的元素。定位器可以更快地完成所有这些工作。代码也少得多

public List<WebElement> test() throws Exception {
     return driver.findElements(By.xpath("(//DIV[@class='issues-list-item clearfix'][contains(.,'High')])"));
}

我应该在
[1]
的位置添加一个通配符吗?我应该如何断言?我应该在
[1]
的位置添加一个通配符吗?我应该如何断言?但是我需要检查所有元素的文本“高”,如果是“高”,则测试失败找不到,因此您应该返回web元素列表。谢谢。但它会引发一系列错误。
返回列表
的类型不兼容。无法解析
包含
的方法。并且valiable已在
元素
的范围内定义更新了整个代码,此错误是因为我们没有使用getText无法解析c的方法内容只是澄清一下,如果xpath没有文本,这怎么会失败?但是我需要检查所有元素中的文本“high”,如果“high”,则测试失败找不到,因此您应该返回web元素列表。谢谢。但它会引发一系列错误。
返回列表
的类型不兼容。无法解析
包含
的方法。并且valiable已在
元素
的范围内定义更新了整个代码,此错误是因为我们没有使用getText无法解析c的方法内容只是澄清一下,如果xpath没有文本,这怎么会失败?