如果条件接受 java 中的所有内容

Accept everything in java if condition

今天我编写了一个自动检查 Netflix 帐户是否可用的程序。但是我在需要接受 URL 中的所有国家/地区代码的时候遇到了困难。我想在 linux 中使用类似 * 的东西,但我的 IDE 给我错误。解决方案是什么?有更好的方法吗?

    WebUI.openBrowser('')

    WebUI.navigateToUrl('https://www.netflix.com/login')

    WebUI.setText(findTestObject('/Page_Netflix/input_email'), 'example@gmail.com')

    WebUI.setText(findTestObject('/Page_Netflix/input_password'), '1234')

    WebUI.click(findTestObject('/Page_Netflix/button_Sign In'))

    TimeUnit.SECONDS.sleep(10)

    if (WebUI.getUrl() == "https://www.netflix.com/" + * + "-" + * + "/login") {

    }
    WebUI.closeBrowser()

如果您想跟踪您所在的国家/地区,您可以为国家/地区代码创建一对有效值列表,并且只需比较两个字符串。 如果您不想那样做并接受 url 字符串中的所有内容,那么我建议您使用 split method:

String sections[] = (WebUI.getUrl()).split("/");
        /* Now we have:
        sections[0] = "https:""
        sections[1] = ""
        sections[2] = "www.netflix.com"
        sections[3] = whatever the code country is
        sections[4] = login
        */

尝试在URL字符串上用正则表达式解决:

  final String COUNTRY_CODES_REGEX =
            "Country1|Country2|Country3";
    Pattern pattern = Pattern.compile(COUNTRY_CODES_REGEX);
    Matcher matcher = pattern.matcher(WebUI.getUrl());
    if (matcher.find()) {
        // Do some stuff.
    }

而不是使用 WebUI.getUrl() == ... 你可以使用 String.matches (String pattern)。与 AutomatedOwl 的回复类似,您将定义一个 String 变量,它是各个国家代码的正则表达式逻辑或分隔聚合。所以你有

String country1 = ...
String country2 = ...
String countryN = ...
String countryCodes = String.join("|", country1, country2, countryN);

然后你有一些类似的东西:

if (WebUI.getUrl().matches("https://www.netflix.com/" + countryCodes + "/login")) {
  ... do stuff
}

这就是你的尝试:

if (WebUI.getUrl() == "https://www.netflix.com/" + * + "-" + * + "/login") {

}

失败了,因为你不能像那样使用 *(除了使用 ==,这不是你在使用 java 时应该做的)。但我认为这就是你想要的:

if (WebUI.getUrl().matches("https://www\.netflix\.com/.+-.+/login")) {
  // do whatever
}

这将匹配您所在的任何国家:任何 url,如 https://www.netflix.com/it-en/login。如果在 if 语句中你需要使用国家信息,你可能需要一个匹配器:

import java.util.regex.*;


Pattern p = Pattern.compile("https://www\.netflix\.com/(.+)-(.+)/login");
Matcher m = p.matcher(WebUI.getUrl());
if (m.matches()) {
   String country = m.group(1);
   String language = m.group(2);
   // do whatever
}

请注意,我们在这里使用 java,因为您已将问题标记为那样。 Katalon 还可以使用 javascript 和 groovy,您也曾在单引号字符串中使用过它们并省略了分号。在groovy中,==进行字符串比较是可以的,也可以使用正则表达式的简写