在我们重新启动服务器之后,我试图在网站上创建一种自动执行小旅程的自动化方法,以便在实际客户进入之前将其加载到Cache中。我已经实现了它的代码,但是它实现了什么所做的只是命中一个服务器/节点并获得该服务器上的缓存。我想要的是它应该一个接一个地击中4个节点中的每一个。
我已经提出了一个想法,我认为我们可以使用Cookie来做到这一点。所以
节点示例:
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();
}
}
答案 0 :(得分:0)
1)Chromedriver每次在您的%temp%中创建一个新的Chrome实例。这意味着,当您使用硒访问您的网站时,您并不是从客户通常用于访问您的网站的Chrome实例中访问它。
因此,完成您要完成的操作的最简单方法是将默认的chrome配置文件路径(客户使用的路径)指定为“ user-data-dir” chrome选项。这样,您将使用正确的Chrome配置文件访问您的网站。
2)关于多节点访问,您可以做的是在单独的Chrome标签中访问所有要访问的4/5 /任意节点。
如果您想访问不同会话中的那些节点,或者如果您不希望会话干扰,则可能需要终止并重新打开chrome实例。您一次只能在一个Chrome实例中使用user-data-dir。
如果将节点作为硒网格系统中的节点,则需要为不同的节点指定不同的chrome配置文件路径和不同的自动化代码。
希望这会有所帮助!
答案 1 :(得分:0)
如果没有会话,则应用程序将为您提供一个新会话,并且很可能会随机选择其他节点。因此,KISS方法将是多次运行脚本,并在每次新运行之前通过driver.manage().deleteAllCookies();
清除cookie。
通过这种方式,您无需了解当前存在的节点数(可能会更改)。要结束脚本,您可以收集每次运行时看到的节点名称,如果在运行三次后没有新节点出现,则可以终止。