gpt4 book ai didi

java - 未找到与 Contains 匹配的字符串 - Java

转载 作者:行者123 更新时间:2023-12-02 11:31:19 26 4
gpt4 key购买 nike

遇到问题了。该代码未找到等于 8QQ 的匹配字符串这是我的完整代码。

            String selector = "div#companyIdBarCompListGrid_rows_scrollpane table tbody tr[id*=companyIdBarCompListGrid_] td span div a";
int links = driver.findElements(By.cssSelector(selector)).size();
System.out.println("Number of links: " + links);

// begin inner for-loop
for (int i = 0; i < links; i++) {
PP_OBJ_CycleData.ScrollToTop(driver);// scroll up

List<WebElement> CCTable = driver.findElements(By.cssSelector(selector));
WebElement code = CCTable.get(i);
System.out.println("\n"+code.getText().substring(0, 3).trim()+"\n");
//code.click();

//----------------------checking for bad code -----------------------------------------
String[] badcodes = {"8QQ", "8BQ", "8JQ"};
boolean check = Arrays.asList(badcodes).contains(code);
System.out.println(check);
//check == true will work as well
if(check){
System.out.println(check+"Bad Code found breaking loop");
break;
}else{

//checking to make sure element is clickable
PP_OBJ_CycleData.isClickable(code, driver);
System.out.println("Clickable?"+ code.isEnabled());
code.click();
}

我认为问题出在这部分:

List<WebElement> CCTable = driver.findElements(By.cssSelector(selector));
WebElement code = CCTable.get(i);
System.out.println("\n"+code.getText().substring(0, 3).trim()+"\n");
//code.click();

我用子字符串截掉了除前 3 个字符之外的所有内容,但那是在 print 语句期间。然而,该字符串实际上比 8QQ 数组中的字符串更长或包含更多字符。这可能是问题所在,是否有办法解决它?所以它只尝试匹配前3个字符?我不认为.contains() 没有这样做。

我看到 matches.find() 方法,但没有取得任何成功。

<小时/>

这是我的代码,现在它可以工作了,我想了很长时间,我的代码如下。现在它打破了循环。

                    String selector = "div#companyIdBarCompListGrid_rows_scrollpane table tbody tr[id*=companyIdBarCompListGrid_] td span div a";
int links = driver.findElements(By.cssSelector(selector)).size();
System.out.println("Number of links: " + links);

// begin inner for-loop
for (int i = 0; i < links; i++) {
PP_OBJ_CycleData.ScrollToTop(driver);// scroll up

List<WebElement> CCTable = driver.findElements(By.cssSelector(selector));
WebElement code = CCTable.get(i);
// changing code to mcode to look for first 3 characters
String mcode = code.getText().substring(0, 3).trim();
System.out.println("\n"+ "modified "+ mcode);
// System.out.println("\n"+code.getText().substring(0, 3).trim()+"\n");

//----------------------checking for bad code -----------------------------------------
String[] badcodes = {"8QQ", "8BQ", "8JQ"};
boolean check = Arrays.asList(badcodes).contains(mcode);
System.out.println(check+"code in array list");
//check == true will work as well
if(check){
System.out.println(check+"-Bad Code found breaking loop");
break;
}else{
//checking to make sure element is clickable
PP_OBJ_CycleData.isClickable(code, driver);
System.out.println("Clickable?"+ code.isEnabled());
code.click();
}

最佳答案

您的代码有两个问题

  1. Arrays.asList(badcodes) 返回一个 List ,而 code 是一个 WebElement:您正在比较两种不同的类型,因此 check 永远不会是真的
  2. 您说 code 超过三个字符,但 List.contains 要求相等。

您可能会混淆 String.contains 和 List.contains。

myString.contains(code)如果 code 是字符串 myString 的子字符串,则返回 true myList.contains(code)如果 code 是 List myList

的元素,则返回 true

在您的代码中, Arrays.asList(badcodes).contains(code) 调用 List.contains,并返回 false,因为 - 正如您所说 - code 长于您要比较的任何字符串。

如何解决这个问题?

  1. code 转换为字符串。您应该知道如何做到这一点,因为您已经在上面的 System.out.println 中做到了。
  2. 确保 code 与您要比较的字符串的长度相同。您应该知道如何做到这一点,因为您已经在上面的 System.out.println 中做到了。

关于java - 未找到与 Contains 匹配的字符串 - Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49284955/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com