2010-01-01 3 views
0

Disons que j'ai une liste de liens et que vous souhaitez cliquer sur un lien au hasard:Selenium-rc: Est-il possible d'envoyer un tampon de demandes

<div id="divA"> 
    <a> first link </a> 
    <a> second link </a> 
    ... 
</div> 

Il n'est pas le plus intelligent des moyens (et si vous avez une meilleure solution s'il vous plaît me dire), mais ce que je fais actuellement est (à peu près):

l = [] 
for i in range(numOfLinks): 
    xpath = '//div[@id="divA"]/a[%d]'%i 
    txt = sel.getText(xpath) 
    l.append(xpath, txt) 

xpath,linkName = random.choice(l) 
sel.click(xpath) 

Le principal problème de cette solution est qu'il envoie de nombreuses demandes de sélénium. Ma question est la suivante: existe-t-il un moyen de sauvegarder toutes ces demandes dans un tampon et de les envoyer immédiatement?

Répondre

0

utilisez-vous le texte pour quelque chose?

numOfLinks = sel.get_xpath_count('//div[@id="divA"]/a') 
random.randrange(1,numOfLinks) 
sel.click('//div[@id="divA"]/a[%d]'%random.randrange(1,numOfLinks)) 

Le code ci-dessus sera toujours cliquer sur un lien au hasard, sans avoir à obtenir le texte du lien à chaque fois.

+0

Bien, mais cela ne résout que cette situation. Si vous avez juste beaucoup de 'sel.get_text' sur une page. Un tampon serait toujours utile – Guy

+1

Autant que je puisse me rappeler il n'y a pas quelque chose comme ça dans l'API mais vous pouvez faire un seul appel dans la page avec getEval et lui dire de collecter les données que vous recherchez dans le DOM et renvoie les résultats – AutomatedTester

Questions connexes