IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Interfaces Graphiques en Java Discussion :

L'interface graphique ne répond pas


Sujet :

Interfaces Graphiques en Java

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2011
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2011
    Messages : 90
    Points : 57
    Points
    57
    Par défaut L'interface graphique ne répond pas
    Bonjour à tous !

    Je viens de créer mon tout premier programme en JAVA.
    J'ai utilisé SELENIUM, un plugin permettant d'automatiser des actions.

    Voilà mon problème :
    Lorsque j'exécute mon programme, l'interface apparaît, je renseigne les informations dont j'ai besoin et clique sur START.

    A ce moment là, le programme ne répond plus sur l'interface graphique.
    Le programme fonctionne correctement, cad qu'il exécute bien le code, mais l'interface graphique est juste plantée.

    Du coup, le setText() que je fais n'est pas visible vu que le programme ne répond pas.
    Auriez-vous une idée ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    package bots;
    
    import org.eclipse.swt.SWT;
    import org.eclipse.swt.widgets.Display;
    import org.eclipse.swt.widgets.Shell;
    import org.eclipse.swt.widgets.Text;
    import org.openqa.selenium.By;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.firefox.FirefoxDriver;
    import org.openqa.selenium.firefox.FirefoxProfile;
    import org.eclipse.swt.widgets.Button;
    import org.eclipse.swt.events.SelectionAdapter;
    import org.eclipse.swt.events.SelectionEvent;
    import org.eclipse.swt.widgets.Label;
    import org.eclipse.wb.swt.SWTResourceManager;
    
    public class GUI_bot {
    	private static Text text;
    	private static Text text_1;
    	private static Text text_2;
    	private static Text text_3;
    	private static Label lblNombreCycles;
    	private static Text Cycles;
    	private static Text text_4;
    	private static Text text_5;
    
    	/**
    	 * Launch the application.
    	 * @param args
    	 */
    	public static void main(String[] args) {
    		Display display = Display.getDefault();
    		Shell shell = new Shell();
    		shell.setSize(450, 280);
    		shell.setText("SEO Incresator");
    		
    		text = new Text(shell, SWT.BORDER);
    		text.setBounds(92, 49, 172, 26);
    		
    		text_1 = new Text(shell, SWT.BORDER);
    		text_1.setBounds(92, 93, 172, 26);
    		
    		text_2 = new Text(shell, SWT.BORDER);
    		text_2.setBounds(92, 140, 172, 26);
    		
    		text_3 = new Text(shell, SWT.BORDER);
    		text_3.setBounds(92, 185, 172, 26);
    		
    		Button Start = new Button(shell, SWT.NONE);
    		Start.addSelectionListener(new SelectionAdapter() {
    			@Override
    			public void widgetSelected(SelectionEvent e) {
    				WebDriver driver = new FirefoxDriver();
    				
    				String URL_1 = text.getText();
    				String URL_2 = text_1.getText();
    				String URL_3 = text_2.getText();
    				String URL_4 = text_3.getText();
    				String session = text_5.getText();
    				
    				if (session.equals(""))
    					session = "1";
    				
    				int i = 0;
    				int j = 0;
    				String stop = Cycles.getText();
    				if (stop.equals(""))
    					stop = "12";
    				
    				while (i < Integer.parseInt(stop)) {
    					if (!URL_1.equals(""))
    						driver.get(URL_1);
    					if (!URL_2.equals(""))
    						driver.get(URL_2);
    					if (!URL_3.equals(""))
    						driver.get(URL_3);
    					if (!URL_4.equals(""))
    						driver.get(URL_4);
    					driver.findElement(By.tagName("p")).click();
    					i++;
    					j++;
    					text_4.setText(Integer.toString(i));
    					if (j == Integer.parseInt(session)) {
    						driver.close();
    						driver = new FirefoxDriver();
    						j = 0;
    					}
    					// shell.update();  shell.validate();  shell.revalidate();   J'ai essayé de "refresh" ici mais rien n'y fait.
    				}
    				driver.quit();
    			}
    		});
    		Start.setBounds(299, 196, 90, 30);
    		Start.setText("Start");
    		
    		lblNombreCycles = new Label(shell, SWT.NONE);
    		lblNombreCycles.setBounds(299, 36, 110, 20);
    		lblNombreCycles.setText("Nombre Cycles");
    		
    		Cycles = new Text(shell, SWT.BORDER);
    		Cycles.setBounds(309, 62, 78, 26);
    		
    		Label lblNewLabel = new Label(shell, SWT.NONE);
    		lblNewLabel.setBounds(138, 10, 126, 20);
    		lblNewLabel.setText("Seo Incresator");
    		
    		Label lblNewLabel_1 = new Label(shell, SWT.NONE);
    		lblNewLabel_1.setAlignment(SWT.CENTER);
    		lblNewLabel_1.setBounds(18, 49, 70, 20);
    		lblNewLabel_1.setText("URL 1");
    		
    		Label lblUrl = new Label(shell, SWT.NONE);
    		lblUrl.setText("URL 2");
    		lblUrl.setAlignment(SWT.CENTER);
    		lblUrl.setBounds(18, 96, 70, 20);
    		
    		Label lblUrl_1 = new Label(shell, SWT.NONE);
    		lblUrl_1.setText("URL 3");
    		lblUrl_1.setAlignment(SWT.CENTER);
    		lblUrl_1.setBounds(18, 143, 70, 20);
    		
    		Label lblUrl_2 = new Label(shell, SWT.NONE);
    		lblUrl_2.setText("URL 4");
    		lblUrl_2.setAlignment(SWT.CENTER);
    		lblUrl_2.setBounds(18, 188, 70, 20);
    		
    		text_4 = new Text(shell, SWT.BORDER);
    		text_4.setEditable(false);
    		text_4.setBackground(SWTResourceManager.getColor(SWT.COLOR_WIDGET_LIGHT_SHADOW));
    		text_4.setBounds(381, 7, 41, 23);
    		
    		Label lblSessionCycles = new Label(shell, SWT.NONE);
    		lblSessionCycles.setBounds(299, 96, 103, 20);
    		lblSessionCycles.setText("Session cycles");
    		
    		text_5 = new Text(shell, SWT.BORDER);
    		text_5.setBounds(309, 122, 78, 26);
    		
    		Button btnPrivate = new Button(shell, SWT.CHECK);
    		btnPrivate.setFont(SWTResourceManager.getFont("Segoe UI", 7, SWT.NORMAL));
    		btnPrivate.addSelectionListener(new SelectionAdapter() {
    			@Override
    			public void widgetSelected(SelectionEvent e) {
    			}
    		});
    		btnPrivate.setBounds(299, 164, 123, 26);
    		btnPrivate.setText("incognito mode");
    
    		shell.open();
    		shell.layout();
    		while (!shell.isDisposed()) {
    			if (!display.readAndDispatch()) {
    				display.sleep();
    			}
    		}
    	}
    }

  2. #2
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 085
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 085
    Points : 8 002
    Points
    8 002
    Par défaut
    Car la fonction du bouton start s'execute dans le thread graphique j'imagine et donc c'est normal que l'interface freeze.

    Il faut éventuellement créer un Thread separé et faire attention lors des modification des composants. (avec Display.asyncExec par exemple)

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2011
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2011
    Messages : 90
    Points : 57
    Points
    57
    Par défaut
    Ah d'accord ! Ca me semble logique.
    Il faut donc que ma fonction soit lancée dans un thread qui va exécuter le code en parallèle.

    Okay, je vais me chercher un tuto pour ça !

  4. #4
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2011
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2011
    Messages : 90
    Points : 57
    Points
    57
    Par défaut
    Alors, après avoir suivi des tutoriels, j'arrive à quelque chose qui ne fonctionne pas
    J'ai divisé le code sur 2 fichier.java

    GUI_bot.java
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
     
    package bots;
     
    import org.eclipse.swt.SWT;
    import org.eclipse.swt.widgets.Display;
    import org.eclipse.swt.widgets.Shell;
    import org.eclipse.swt.widgets.Text;
    import org.openqa.selenium.By;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.firefox.FirefoxDriver;
    import org.openqa.selenium.firefox.FirefoxProfile;
    import org.eclipse.swt.widgets.Button;
    import org.eclipse.swt.events.SelectionAdapter;
    import org.eclipse.swt.events.SelectionEvent;
    import org.eclipse.swt.widgets.Label;
    import org.eclipse.wb.swt.SWTResourceManager;
     
    public class GUI_bot {
    	private static Text text;
    	private static Text text_1;
    	private static Text text_2;
    	private static Text text_3;
    	private static Label lblNombreCycles;
    	private static Text Cycles;
    	private static Text text_4;
    	private static Text text_5;
     
    	/**
             * Launch the application.
             * @param args
             */
    	public static void main(String[] args) {
    		Display display = Display.getDefault();
    		Shell shell = new Shell();
    		shell.setSize(450, 280);
    		shell.setText("SEO Incresator");
     
    		text = new Text(shell, SWT.BORDER);
    		text.setBounds(92, 49, 172, 26);
     
    		text_1 = new Text(shell, SWT.BORDER);
    		text_1.setBounds(92, 93, 172, 26);
     
    		text_2 = new Text(shell, SWT.BORDER);
    		text_2.setBounds(92, 140, 172, 26);
     
    		text_3 = new Text(shell, SWT.BORDER);
    		text_3.setBounds(92, 185, 172, 26);
     
     
     
    		Button Start = new Button(shell, SWT.NONE);
    		Start.addSelectionListener(new SelectionAdapter() {
     
    			String URL_1 = text.getText();
    			String URL_2 = text_1.getText();
    			String URL_3 = text_2.getText();
    			String URL_4 = text_3.getText();
    			String stop = Cycles.getText();
    			String session = text_5.getText();
     
    			public void widgetSelected(SelectionEvent e) {
    				Thread t = new Thread() {
    			        public void run() {          
    			          my_thread action = new my_thread();
    			          action.traitement(URL_1,URL_2,URL_3,URL_4, stop, session);
    			        }
    			      };
    			      t.start();
    			}			
    		});
    		Start.setBounds(299, 196, 90, 30);
    		Start.setText("Start");
     
    		lblNombreCycles = new Label(shell, SWT.NONE);
    		lblNombreCycles.setBounds(299, 36, 110, 20);
    		lblNombreCycles.setText("Nombre Cycles");
     
    		Cycles = new Text(shell, SWT.BORDER);
    		Cycles.setBounds(309, 62, 78, 26);
     
    		Label lblNewLabel = new Label(shell, SWT.NONE);
    		lblNewLabel.setBounds(138, 10, 126, 20);
    		lblNewLabel.setText("Seo Incresator");
     
    		Label lblNewLabel_1 = new Label(shell, SWT.NONE);
    		lblNewLabel_1.setAlignment(SWT.CENTER);
    		lblNewLabel_1.setBounds(18, 49, 70, 20);
    		lblNewLabel_1.setText("URL 1");
     
    		Label lblUrl = new Label(shell, SWT.NONE);
    		lblUrl.setText("URL 2");
    		lblUrl.setAlignment(SWT.CENTER);
    		lblUrl.setBounds(18, 96, 70, 20);
     
    		Label lblUrl_1 = new Label(shell, SWT.NONE);
    		lblUrl_1.setText("URL 3");
    		lblUrl_1.setAlignment(SWT.CENTER);
    		lblUrl_1.setBounds(18, 143, 70, 20);
     
    		Label lblUrl_2 = new Label(shell, SWT.NONE);
    		lblUrl_2.setText("URL 4");
    		lblUrl_2.setAlignment(SWT.CENTER);
    		lblUrl_2.setBounds(18, 188, 70, 20);
     
    		text_4 = new Text(shell, SWT.BORDER);
    		text_4.setEditable(false);
    		text_4.setBackground(SWTResourceManager.getColor(SWT.COLOR_WIDGET_LIGHT_SHADOW));
    		text_4.setBounds(381, 7, 41, 23);
     
    		Label lblSessionCycles = new Label(shell, SWT.NONE);
    		lblSessionCycles.setBounds(299, 96, 103, 20);
    		lblSessionCycles.setText("Session cycles");
     
    		text_5 = new Text(shell, SWT.BORDER);
    		text_5.setBounds(309, 122, 78, 26);
     
    		Button btnPrivate = new Button(shell, SWT.CHECK);
    		btnPrivate.setFont(SWTResourceManager.getFont("Segoe UI", 7, SWT.NORMAL));
    		btnPrivate.addSelectionListener(new SelectionAdapter() {
    			@Override
    			public void widgetSelected(SelectionEvent e) {
    			}
    		});
    		btnPrivate.setBounds(299, 164, 123, 26);
    		btnPrivate.setText("incognito mode");
     
    		shell.open();
    		shell.layout();
    		while (!shell.isDisposed()) {
    			if (!display.readAndDispatch()) {
    				display.sleep();
    			}
    		}
    	}
    }
    my_thread.java
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
    package bots;
     
    import org.openqa.selenium.By;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.firefox.FirefoxDriver;
     
    public class my_thread extends Thread{
     
    	public void traitement(String URL_1,String URL_2,String URL_3,String URL_4,String stop,String session) {
     
    		if (stop.equals(""))
    			stop = "12";
    		if (session.equals(""))
    			session = "1";
     
    		int i = 0;
    		int j = 0;
     
    		WebDriver driver = new FirefoxDriver();
     
    		while (i < Integer.parseInt(stop)) {
    			if (!URL_1.equals(""))
    				driver.get(URL_1);
    			if (!URL_2.equals(""))
    				driver.get(URL_2);
    			if (!URL_3.equals(""))
    				driver.get(URL_3);
    			if (!URL_4.equals(""))
    				driver.get(URL_4);
    			driver.findElement(By.tagName("p")).click();
    			i++;
    			j++;
    			//text_4.setText(Integer.toString(i));
    			if (j == Integer.parseInt(session)) {
    				driver.close();
    				driver = new FirefoxDriver();
    				j = 0;
    			}
    			//shell.update();
    		}
    		driver.quit();
    	}
    }

    Voici l'erreur : Exception in thread "main" java.lang.NullPointerException
    at bots.GUI_bot$1.<init>(GUI_bot.java:58)
    at bots.GUI_bot.main(GUI_bot.java:52)

  5. #5
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Je pense que le problème vient d'ici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Start.addSelectionListener(new SelectionAdapter() {
     
    			String URL_1 = text.getText();
    			String URL_2 = text_1.getText();
    			String URL_3 = text_2.getText();
    			String URL_4 = text_3.getText();
    			String stop = Cycles.getText();
    			String session = text_5.getText();
     
    			public void widgetSelected(SelectionEvent e) {
    				Thread t = new Thread() {
     
              /* ... */
    Les déclarations des attributs de ta classe anonyme sont exécutées à la construction de la classe, donc quand on appelle Start.addSelectionListener().
    Mais à ce moment, Cycles n'est pas encore initialisée (c'est fait plus tard dans le code). Mais, de toute manière, ce n'est pas en attribut qu'il faut déclarer ces variables, sinon les saisies dans tes champs ne seront prise en comptes que là à la construction du SelectionAdapter, donc bien avant que la fenêtre ne s'affiche et, donc, que tu aies pu saisir quoique ce soit. Tout ce que tu pourras ensuite saisir dans tes champs sera toujours ignoré.

    Il faut déclarer ces variables dans la méthode widgetSelected().

    Par ailleurs, une remarque, ta seconde classe n'a pas besoin d'étendre Thread !

  6. #6
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2011
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2011
    Messages : 90
    Points : 57
    Points
    57
    Par défaut
    Merci Joel, tout fonctionne parfaitement.

    En revanche, j'ai quelques questions :s

    Ai-je réellement besoin d'un Thread Etant donné que le code exécuté qui lance Firefox et tout se trouve dans un autre objet ?
    Peut être ai-je mal compris l'intérêt des threads

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
     
    package bots;
     
    import org.eclipse.swt.SWT;
    import org.eclipse.swt.widgets.Display;
    import org.eclipse.swt.widgets.Shell;
    import org.eclipse.swt.widgets.Text;
    import org.openqa.selenium.By;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.firefox.FirefoxDriver;
    import org.openqa.selenium.firefox.FirefoxProfile;
    import org.eclipse.swt.widgets.Button;
    import org.eclipse.swt.events.SelectionAdapter;
    import org.eclipse.swt.events.SelectionEvent;
    import org.eclipse.swt.widgets.Label;
    import org.eclipse.wb.swt.SWTResourceManager;
     
    public class GUI_bot {
    	private static Text text;
    	private static Text text_1;
    	private static Text text_2;
    	private static Text text_3;
    	private static Label lblNombreCycles;
    	private static Text Cycles;
    	private static Text text_4;
    	private static Text text_5;
     
    	/**
             * Launch the application.
             * @param args
             */
    	public static void main(String[] args) {
    		Display display = Display.getDefault();
    		Shell shell = new Shell();
    		shell.setSize(450, 280);
    		shell.setText("SEO Incresator");
     
    		text = new Text(shell, SWT.BORDER);
    		text.setBounds(92, 49, 172, 26);
     
    		text_1 = new Text(shell, SWT.BORDER);
    		text_1.setBounds(92, 93, 172, 26);
     
    		text_2 = new Text(shell, SWT.BORDER);
    		text_2.setBounds(92, 140, 172, 26);
     
    		text_3 = new Text(shell, SWT.BORDER);
    		text_3.setBounds(92, 185, 172, 26);
     
    		lblNombreCycles = new Label(shell, SWT.NONE);
    		lblNombreCycles.setBounds(299, 36, 110, 20);
    		lblNombreCycles.setText("Nombre Cycles");
     
    		Cycles = new Text(shell, SWT.BORDER);
    		Cycles.setBounds(309, 62, 78, 26);
     
    		Label lblNewLabel = new Label(shell, SWT.NONE);
    		lblNewLabel.setBounds(138, 10, 126, 20);
    		lblNewLabel.setText("Seo Incresator");
     
    		Label lblNewLabel_1 = new Label(shell, SWT.NONE);
    		lblNewLabel_1.setAlignment(SWT.CENTER);
    		lblNewLabel_1.setBounds(18, 49, 70, 20);
    		lblNewLabel_1.setText("URL 1");
     
    		Label lblUrl = new Label(shell, SWT.NONE);
    		lblUrl.setText("URL 2");
    		lblUrl.setAlignment(SWT.CENTER);
    		lblUrl.setBounds(18, 96, 70, 20);
     
    		Label lblUrl_1 = new Label(shell, SWT.NONE);
    		lblUrl_1.setText("URL 3");
    		lblUrl_1.setAlignment(SWT.CENTER);
    		lblUrl_1.setBounds(18, 143, 70, 20);
     
    		Label lblUrl_2 = new Label(shell, SWT.NONE);
    		lblUrl_2.setText("URL 4");
    		lblUrl_2.setAlignment(SWT.CENTER);
    		lblUrl_2.setBounds(18, 188, 70, 20);
     
    		text_4 = new Text(shell, SWT.BORDER);
    		text_4.setEditable(false);
    		text_4.setBackground(SWTResourceManager.getColor(SWT.COLOR_WIDGET_LIGHT_SHADOW));
    		text_4.setBounds(381, 7, 41, 23);
     
    		Label lblSessionCycles = new Label(shell, SWT.NONE);
    		lblSessionCycles.setBounds(299, 96, 103, 20);
    		lblSessionCycles.setText("Session cycles");
     
    		text_5 = new Text(shell, SWT.BORDER);
    		text_5.setBounds(309, 122, 78, 26);
     
    		Button btnPrivate = new Button(shell, SWT.CHECK);
    		btnPrivate.setFont(SWTResourceManager.getFont("Segoe UI", 7, SWT.NORMAL));
    		btnPrivate.addSelectionListener(new SelectionAdapter() {
    			@Override
    			public void widgetSelected(SelectionEvent e) {
    			}
    		});
    		btnPrivate.setBounds(299, 164, 123, 26);
    		btnPrivate.setText("incognito mode");
     
    		Button Start = new Button(shell, SWT.NONE);
    		Start.addSelectionListener(new SelectionAdapter() {
     
     
     
    			public void widgetSelected(SelectionEvent e) {
     
    				String URL_1 = text.getText();
    				String URL_2 = text_1.getText();
    				String URL_3 = text_2.getText();
    				String URL_4 = text_3.getText();
    				String stop = Cycles.getText();
    				String session = text_5.getText();
     
    				Thread t = new Thread() {
    			        public void run() {          
    			          my_thread action = new my_thread();
    			          action.traitement(URL_1, URL_2, URL_3, URL_4, stop, session);
    			        }
    			      };
    			      t.start();
    			}			
    		});
    		Start.setBounds(299, 196, 90, 30);
    		Start.setText("Start");
     
     
    		shell.open();
    		shell.layout();
    		while (!shell.isDisposed()) {
    			if (!display.readAndDispatch()) {
    				display.sleep();
    			}
    		}
    	}
    }


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    package bots;
     
    import org.openqa.selenium.By;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.firefox.FirefoxDriver;
     
    public class my_thread {
     
    	public void traitement(String URL_1,String URL_2,String URL_3,String URL_4,String stop,String session) {
     
    		if (stop.equals(""))
    			stop = "12";
    		if (session.equals(""))
    			session = "1";
     
    		int i = 0;
    		int j = 0;
     
    		WebDriver driver = new FirefoxDriver();
     
    		while (i < Integer.parseInt(stop)) {
    			if (!URL_1.equals(""))
    				driver.get(URL_1);
    			if (!URL_2.equals(""))
    				driver.get(URL_2);
    			if (!URL_3.equals(""))
    				driver.get(URL_3);
    			if (!URL_4.equals(""))
    				driver.get(URL_4);
    			driver.findElement(By.tagName("p")).click();
    			i++;
    			j++;
    			//text_4.setText(Integer.toString(i));
    			if (j == Integer.parseInt(session)) {
    				driver.close();
    				driver = new FirefoxDriver();
    				j = 0;
    			}
    		}
    		driver.quit();
    	}
    }
    Je laisse le code pour ceux qui serait interessé par ce petit logiciel.
    Il permet de se connecter à des liens que l'on renseigne, on peut préciser combien de fois et tout les combien de temps on change de session.
    Basiquement, c'est un peu comme un jMetter en bcp moins bien, mais je voulais développer et apprendre le JAVA

    C'est possible que ce soit utile pour simuler du trafic sur son site et d'améliorer son référencement naturel, peut être lol.

  7. #7
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Je ne comprends pas très bien : tu dis que ça n'a affiche rien, mais tu postes ce qui semble être une trace, qui comporte entre autre ce genre d'erreur :
    Caused by: org.openqa.selenium.NoSuchElementException: Unable to locate element: {"method":"tag name","selector":"p"}
    En plus la stack trace confirme que ça passe par ta méthode traitement :
    at org.openqa.selenium.By$ByTagName.findElement(By.java:331)
    at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:340)
    at bots.my_thread.traitement(my_thread.java:30)
    at bots.GUI_bot$2$1.run(GUI_bot.java:116)
    Ce qui veut dire que l'élément demandé avec get n'existe pas. Je ne connais pas Selenium, donc je ne peux pas te guider plus que cela : soit l'élément n'existe pas, soit la chaîne que tu passes en paramètre ne désigne pas l'élément que tu penses...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Premier pas en interface graphique (Layout)
    Par Neewd dans le forum Débuter
    Réponses: 6
    Dernier message: 30/04/2013, 14h23
  2. [phpMyAdmin] Le serveur ne répond pas (ou l'interface de connexion vers le serveur MySQL local n'est pas correctement confi
    Par VITALTH dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 23/07/2012, 10h02
  3. Pas d'interface graphique.
    Par Luke spywoker dans le forum Ubuntu
    Réponses: 7
    Dernier message: 12/09/2011, 08h14
  4. Pas d'interface graphique sous Mandriva
    Par JavaAcro dans le forum Applications et environnements graphiques
    Réponses: 5
    Dernier message: 11/05/2006, 10h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo