Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.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
Java driver.findElement(By.xpath)返回错误_Java_Selenium_Xpath - Fatal编程技术网

Java driver.findElement(By.xpath)返回错误

Java driver.findElement(By.xpath)返回错误,java,selenium,xpath,Java,Selenium,Xpath,我有以下代码 for ( ; ; ) { int x=0; System.out.println("Executing!"); //wait2.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("xpath=(//a[contains(text(),'-P24-')])["+x+"]"))); driver.fin

我有以下代码

for ( ; ; )
        {
            int x=0;
            System.out.println("Executing!");
            //wait2.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("xpath=(//a[contains(text(),'-P24-')])["+x+"]")));
            driver.findElement(By.xpath("//a[contains(text(),'-P24-']["+x+"]")).click();
            System.out.println("Number"+x);
            x=1+x;
        }
它抛出异常

Exception in thread "main" org.openqa.selenium.InvalidSelectorException: Given xpath expression "//a[contains(text(),'-P24-'][0]" is invalid
我使用Selenium IDE发现文本P24位于

//a[contains(text(),'-P24-'][2]
//a[contains(text(),'-P24-'][3]
但有时它位于

//a[contains(text(),'-P24-'][2]
//a[contains(text(),'-P24-'][3]
所以我正在尝试上面的代码。 我猜在web驱动程序中,我不能使用[x],但您能告诉我吗?
谢谢!

首先,查看是否有多个点击:

int matches = driver.findElements(By.xpath("//a[contains(text(),'-P24-')]").size();
然后,您可以在xpath中传递[x]参数,也可以将匹配的web元素的整个数组放入web元素数组中,如下所示:

List<WebElement> elems = driver.findElements(By.xpath("//a[contains(text(),'-P24-')]");
或者你可以循环浏览所有这些内容:

for (int x=0; x<elems.size(); x++)
  System.out.println(elems.get(x).getText());
请尝试以下操作:

 List <WebElement> allItems = 
 driver.findElements(By.xpath("//a[contains(text(),'-P24-')]"));
    if(allItems.size()>0){
        Iterator itr = allItems.iterator();

        int i=0;
        while(itr.hasNext()){
            WebElement yourElement = (WebElement) itr.next();
            System.out.println(yourElement .getText());
            i++;
        }
    }

在代码中尝试下面的xpath

//a[text()[contains(.,'-P24-')]]["+x+"]

异常的消息有什么不清楚的地方?xpath无效,并且不难发现问题。我正在尝试找到问题的解决方案。我确实理解异常…@f1sh当你不能提供解决方案时,为什么你要否决我的问题?!我可以提供一个。但是很容易发现,给你解决方案对你没有帮助当java代码无效时,您会寻找什么?这仍然会引发异常,因为xpath不可用valid@f1sh:Bill的xpath有什么问题?@kushal。它不是Bill的xpath,他只是复制了它。因此它包含与OP问题中的错误相同的错误。是的,我知道我应该发现缺少的右括号,而你是是的,我复制了它。虽然我不认为它值得两次否决票。但是缺少括号是出现异常的原因。复制问题并将其包装为答案是一个很好的理由。imho。你试过运行它吗?这个xpath表达式也错了。OP的异常声明xpath无效,而你只是将它复制到n答案。好的;只是缺少了一个,我现在已经更新了。这有机会成为一个被接受的答案。这就是OP的无效选择例外的原因。OP到底是什么?