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

时间:2018-07-14 16:01:41

标签: java katalon-studio webui

今天,我编写了一个程序,该程序自动检查Netflix帐户是否正常运行。但是在需要接受URL中所有国家/地区代码的时候,我很挣扎。我想在Linux中使用*,但我的IDE给我Errors。解决方案是什么,还有更好的方法吗?

    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()

4 个答案:

答案 0 :(得分:2)

这是您的尝试:

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

}

会失败,因为您不能像这样使用*(除了使用==之外,这不是使用Java时应该执行的操作)。但是我认为这就是您想要的:

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

,它将与您所在的国家/地区匹配:任何网址,例如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,您也已在单引号字符串中使用了它们,并省略了分号。在常规情况下,可以使用==进行字符串比较,也可以将速记用于正则表达式。

答案 1 :(得分:0)

如果要跟踪您所在的国家/地区,则可以为国家/地区代码创建一个成对有效值的列表,只需比较两个字符串即可。 如果您不想这样做,并且不接受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
        */

答案 2 :(得分:0)

尝试使用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.
    }

答案 3 :(得分:0)

代替使用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
}