gpt4 book ai didi

java - 使用 Selenium 在所有应用程序服务器上加载缓存

转载 作者:行者123 更新时间:2023-12-02 09:35:03 25 4
gpt4 key购买 nike

我正在尝试创建一种自动化方式,在我们重新启动服务器后在我的网站上执行一次小型旅程,以便在实际客户进入之前加载缓存中的所有内容。我已经实现了它的代码,但它是什么所做的只是点击一台服务器/节点并获取该服务器上的缓存。我想要的是它应该一一击中 4 个节点中的每一个。

我想了一下,我认为我们可以通过使用 cookies 来实现。所以

  1. 运行程序并从 cookie 中获取 sessionID。
  2. 该 sessionID 包含节点号。
  3. 检查节点并循环相同的程序以命中另外 3 个节点。

节点示例:

354654-node-1,2,3,4

public static void main(String[] args) {
try {
System.setProperty("webdriver.chrome.driver", "C:\\Shashank\\Java\\Selenium\\chromedriver_win32\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.get("https://www.example.com/new");
driver.manage().window().maximize();
driver.findElement(By.id("consent_prompt_submit")).click();
driver.findElement(By.id("postcode")).sendKeys("12345");
driver.findElement(By.className("button-container")).click();

String cookieValue = driver.manage().getCookieNamed("sessID").getValue();
String cookiePath = driver.manage().getCookieNamed("sessID").getPath();
Date expiryDate = driver.manage().getCookieNamed("sessID").getExpiry();
boolean isSecure = driver.manage().getCookieNamed("sessID").isSecure();
System.out.println("Cookie value for sessID : " + cookieValue);
System.out.println("Cookie Path for sessID : " + cookiePath);
System.out.println("Cookie Expiry for sessID : " + expiryDate);
System.out.println("Cookie Secure for sessID : " + isSecure);

// I need to write code here to invoke another session like above but it should hit another node

} catch (Exception e) {
e.printStackTrace();
}
}

最佳答案

1) Chromedriver 每次都会在您的 %temp% 中创建一个新的 chrome 实例。这意味着,当您使用 selenium 访问您的网站时,您并不是从客户通常用来访问您的网站的 chrome 实例来访问它。

因此,完成您想要完成的任务的最简单方法是将默认的 chrome 配置文件路径(您的客户正在使用的路径)指定为“user-data-dir”chrome 选项。这样,您就可以通过正确的 Chrome 配置文件访问您的网站。

2)关于多节点访问,您可以做的是在单独的chrome选项卡中访问所有4/5/任何您想要访问的节点。

  • 使用 Actions 类通过发送“Ctrl + T”键打开新选项卡
  • 使用 driver.getWindowHandles() 获取选项卡列表
  • 使用 driver.switchTo().window(...) 转到最后一个选项卡并访问另一个节点

如果您想在不同的 session 中访问这些节点,或者您不希望 session 相互干扰,那么您可能需要终止并重新打开 chrome 实例。您一次只能在一个 chrome 实例中使用 user-data-dir。

如果您将节点引用为selenium网格系统中的节点,那么您需要为不同的节点指定不同的chrome配置文件路径和不同的自动化代码。

希望这有帮助!

关于java - 使用 Selenium 在所有应用程序服务器上加载缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57591594/

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