У меня есть тесты селена, предназначенные для выполнения в нескольких средах, таких как Dev, QA, Staging, UAT. Однако эти среды не сопоставляются с именами доменов DNS, поэтому мне дали несколько IP-адресов и имен хостов для добавления в файл хостов компьютера, с которого будут выполняться эти тесты, такие как агенты Jenkins или мой локальный компьютер. Однако у меня нет доступа (Admin) к файлам хостов на этих машинах, и я не считаю практичным также делать это на нескольких машинах.
Мне интересно, есть ли способ обойти эти хосты? записей и достичь того же с помощью java кода?
Я пробовал dns java, но мне не удалось заставить работать оператор driver.get("https://my.url.com/signup")
. Он не может видеть среду my.url.com.
Записи моего хоста выглядят следующим образом.
1.2.3.4 dev.application.com
5.6.7.8 qa.application.com
2.3.4.5 uat.application.com
4.5.6.7 Staging.application.com
Я пробовал код ниже dns java, чтобы обойти добавление хостов записей, добавляя их в кэш DNS, надеясь, что JVM разрешит их, как и ожидалось.
public static void setupDNSEntries() {
System.setProperty("sun.net.spi.nameservice.provider.1", "dns,dnsjava");
try (BufferedReader reader = new BufferedReader(new InputStreamReader(EnvironmentSetup.class.getResourceAsStream("/hosts")))) {
LogManager.getLogger().info("Adding DNS look-up entries to default cache.");
while (reader.ready()) {
String[] line = reader.readLine().split(" ");
String ipaddress = line[0].trim();
String hostname = line[1].trim();
addHostToCacheAs(hostname, ipaddress);
LogManager.getLogger().info(ipaddress + " " + hostname);
}
}catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void addHostToCacheAs(String hostname, String ipAddress) throws UnknownHostException, TextParseException {
// add an ending period assuming the hostname is truly an absolute hostname
Name host = new Name(hostname + ".");
// putting in a good long TTL, and using an A record, but AAAA might be desired as well for IPv6
Record aRec = new ARecord(host, Type.A, 9999999, InetAddress.getByName(ipAddress));
Lookup.getDefaultCache(Type.A).addRecord(aRec, Credibility.NORMAL);
}
наконец, я пытаюсь получить driver.get("https://my.url.com/signup")
, чтобы успешно перейти к приложению, но оно не работает.
Если я просто добавлю все записи хоста в 'C:\Windows\system32\drivers\etc\hosts'
, тогда driver.get("https://my.url.com/signup")
будет работать безупречно.
Где я ошибаюсь?