2016-11-23 1 views
1

J'utilise phantomjs version 1.1.0 et phantomjs-2.1.1.exe pour windows.Élément non trouvé sur phantomjs Mais fonctionnant bien sur chrome

CONTINUE ACTIVATED

Voici le code HTML

<div class="right-align" style="display: inline-block; vertical-align: middle; border-radius: 6px; margin-left: 20px; flex-grow: 100;"> 
<div> 
<a class="t-next-pd continue-to-query button-text" style="background-color: rgb(11, 197, 216); color: rgb(255, 255, 255); height: 40px; padding: 0px 16px; text-decoration: none; display: inline-flex; font-weight: 500; font-size: 16px; border-radius: 4px; z-index: 100; cursor: pointer; align-items: center; justify-content: center; border: 1px solid rgb(11, 197, 216); width: 100%;"> 
<span style="display: inline-block;">CONTINUE</span> 
</a> 
</div> 
</div> 

J'ai essayé de localiser l'élément en utilisant

  1. XPath relative pour les deux classes: .//*[@class='t-next-pd continue-to-query button-text'], .//*[@class='right-align']
  2. par texte
  3. par texte partiel
  4. par liaison
  5. par cssSelector
  6. XPath par rapport avec le texte
  7. par XPath absolue (priorité dernier)
  8. Par ClassName
  9. javascript exécuteur
  10. attente implicite et explicite attente

RIEN NE SEMBLE FONCTIONNER

Le bouton CONTINUER n'est activé que lorsque j'entre le nom et l'âge. Ceci est le code lorsque le bouton CONTINUER n'est pas activé.

<div class="right-align" style="display: inline-block; vertical-align: middle; border-radius: 6px; margin-left: 20px; flex-grow: 100;"> 
<div> 
<a class="button-text" disabled="" style="background-color: rgb(199, 199, 199); color: rgb(255, 255, 255); height: 40px; padding: 0px 16px; display: inline-flex; text-decoration: none; font-weight: 500; font-size: 16px; border-radius: 4px; z-index: 100; cursor: pointer; align-items: center; justify-content: center; width: 100%;"> 
<span style="display: inline-block;">CONTINUE</span> 
</a> 
</div> 
</div> 

CONTINUE DEACTIVATED

+0

J'ai utilisé ce 'a.t-next-pd.continue-à-query.button Text' sur le bouton activé. Ceci est un sélecteur CSS et cela fonctionne très bien dans mon cas. –

Répondre

0

Après avoir rempli les détails attendre une seconde. PhantomJS recherche immédiatement le bouton de poursuite activé. C'est très probablement un problème de synchronisation. Le bouton Continuer peut prendre de 500ms à 1 seconde pour devenir actif. Par conséquent, lorsque PhantomJS commence à rechercher le bouton activé, il ne peut pas le trouver car s'il n'existe pas encore dans le DOM.

Si vous utilisez Python, utilisez time.sleep(2). Il fait une pause pendant 2 secondes. Cela donne au DOM le temps de changer le code inactivé en code activé. J'ai utilisé ce a.t-next-pd.continue-to-query.button-text pour trouver le bouton activé. Ceci est un sélecteur CSS et cela a bien fonctionné dans mon cas de test :)

Convertissez ceci dans la langue que vous utilisez. J'utilise Python: -

# code 
# to 
# fill the form 
time.sleep(2) 
driver.find_element_by_css_selector('a.t-next-pd.continue-to-query.button-text') 
+0

Ne fonctionne toujours pas. langue: Java. J'ai déjà utilisé: - 1. driver.manage(). Timeout(). ImplicitlyWait (30, TimeUnit.SECONDS); 2. TimeUnit.SECONDS.sleep (5); 3. Thread.sleep (1000); Tous ne fonctionnent pas. –

+0

@SaurabhNagpal Pouvez-vous partager plus de code sur la page Web et votre code Java? J'ai essayé avec tout ce que tu as donné et ça marche de mon côté. Cela aidera les gens à trouver le problème.Si le problème persiste après avoir partagé le code, je créerai une salle de discussion où nous pourrons en discuter en détail :) –