Я пытаюсь найти способ использовать то же самое открытое окно / сеанс phantomjs в другом классе.
Если окно / сеанс перезагружено / повторно открыто / обновлено, пользователь выйдет из системы.
Когда я захожу на сайт и захожу в свою учетную запись, я нажимаю F5 или обновляю, я выхожу из системы.
У меня есть класс: Логин / CarteEtd / CarteEtd_Info / Accueil
Когда пользователь входит в Jframe в классе Login, он перенаправляет на класс Accueil (домашняя страница), чтобы при нажатии на него он находил изображения / кнопки, он перенаправляет на класс CarteEtd, затем CarteEtd перенаправляет на CarteEtd_Info
Почему класс CarteEtd, а затем CarteEtd_Info?потому что я не могу наследовать класс Login в CarteEtd, потому что CarteEtd имеет расширенный JFrame, поэтому я помещаю JFrame / GUI в CarteEtd, а затем вызываю CarteEtd_Info, класс CarteEtd_Info делает снимок экрана с информацией о конкретном пользователе в открытых фантомахв классе входа в систему
Проблема теперь в том, что CarteEtd_Info использует драйвер класса входа в систему, но он перезагружает или открывает новые Phantomjs, idk, но я знаю, что пользователь вышел из системы
I 'используя скриншот, чтобы получить капчу и идентификационную карту пользователя
Это часть класса входа в систему
System.setProperty("phantomjs.binary.path", "phantomjs.exe");
WebDriver driver = new PhantomJSDriver();
//driver.manage().Window.Size = new Size(1920, 1080);
driver.get("https://www4.inscription.tn/ORegMx/servlet/AuthentificationEtud?ident=cin");
String title1=driver.getTitle();
if (!(title1.equals("Site de l'inscription universitaire en ligne"))) {
JOptionPane.showMessageDialog(null,"Verifiez votre connexion internet");
driver.quit();
}
WebElement ele = driver.findElement(By.xpath("//td[@rowspan='2']"));
driver.manage().timeouts().implicitlyWait(1, TimeUnit.SECONDS);
// Get entire page screenshot
File screenshot = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
BufferedImage fullImg = ImageIO.read(screenshot);
// Get the location of element on the page
org.openqa.selenium.Point point = ele.getLocation();
// Get width and height of the element
int eleWidth = ele.getSize().getWidth();
int eleHeight = ele.getSize().getHeight();
// Crop the entire page screenshot to get only element screenshot
BufferedImage eleScreenshot= fullImg.getSubimage(point.getX(), point.getY(),
eleWidth, eleHeight);
ImageIO.write(eleScreenshot, "png", screenshot);
// Copy the element screenshot to disk
File screenshotLocation = new File("temp\\captcha.png");
FileUtils.copyFile(screenshot, screenshotLocation);
JLabel captcha = new JLabel("");
captcha.setIcon(new ImageIcon("temp\\captcha.png"));
captcha.setBounds(574, 304, 182, 50);
frame.getContentPane().add(captcha);
Это код в CarteEtd, который вызывает CarteEtd_Info
CarteEtd_Info id= new CarteEtd_Info();
id.id();
это весь код класса CarteEtd_info
class CarteEtd_Info extends Login{
/**
*
*/
private static final long serialVersionUID = 1L;
public CarteEtd_Info() throws IOException {
super();
// TODO Auto-generated constructor stub
}
public void id() throws IOException {
// driver= Login.driver;
//WebDriver driver = sameWindow.driver;
//driver.manage().timeouts().implicitlyWait(4, TimeUnit.SECONDS);
WebElement ele = driver.findElement(By.xpath("/html[1]/body[1]/table[1]/tbody[1]/tr[1]/td[1]/table[1]/tbody[1]/tr[1]/td[1]/table[1]/tbody[1]/tr[1]/td[1]/form[1]/div[1]/table[1]/tbody[1]/tr[1]/td[3]/div[1]/span[1]/a[1]/i[1]"));
driver.manage().timeouts().implicitlyWait(4, TimeUnit.SECONDS);
//Actions builder = new Actions(driver);
// builder.moveToElement(ele2).click(ele2);
// builder.perform();
//driver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
// Get entire page screenshot
//WebElement ele = driver.findElement(By.xpath("/html[1]/body[1]/table[1]/tbody[1]/tr[1]/td[1]/table[1]/tbody[1]/tr[1]/td[1]/table[2]/tbody[1]/tr[4]/td[1]"));
File screenshot = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
BufferedImage fullImg = null;
try {
fullImg = ImageIO.read(screenshot);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// Get the location of element on the page
org.openqa.selenium.Point point = ele.getLocation();
// Get width and height of the element
int eleWidth = ele.getSize().getWidth();
int eleHeight = ele.getSize().getHeight();
// Crop the entire page screenshot to get only element screenshot
BufferedImage eleScreenshot= fullImg.getSubimage(point.getX(), point.getY(),
eleWidth, eleHeight);
try {
ImageIO.write(eleScreenshot, "png", screenshot);
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
// Copy the element screenshot to disk
File screenshotLocation = new File("temp\\carte.png");
try {
FileUtils.copyFile(screenshot, screenshotLocation);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Я думаю, есть ли способ сохранить куки пользователя и использовать его в новом окне phantomjs
или
код в классе Login - поймать pid открытого процесса phantomjs, затем он использует этот pid для вызова процесса и использует его в CarteEtd_Info
Allпотому что я хочу сделать свой код чистым, чтобы загрузить его в github после этого в качестве школьного проекта, проще использовать все в одном классе, но я считаю, что использование нескольких классов - это профессиональный способ