2010-12-03 31 views
3
sel.add_script(sel.get_location(), "jquery.js") 

#here I get u'fd6c42bcc770ca9decc4f358df3688290a4257ad'` 
     idOfResultWithSomeImage=sel.get_eval("window.jQuery('#result').find('img').filter('[alt=SeleImage]').eq(0).parents('form:first').find('a').eq(1).attr('id')")` 

    #here I get u"window.jQuery('#fd6c42bcc770ca9decc4f358df3688290a4257ad').parent().find('button')" 
     pathOfButton="window.jQuery('#" + idOfResultWithSomeImage+ "').parent().find('button')" 

     #here I get false :/ 
     isButtonPreset = sel.is_element_present(pathOfButton) 
     #so here I get error. Element not present. 
     sel.click(pathOfButton) 

Lorsque je vérifie cela dans la console de firebug, il me trouve ce bouton.Jquery ne trouve pas d'élément dans le sélénium

J'utilise

# -*- coding: utf-8 -*- 

et je codage dans WingIde.

Avez-vous une idée pourquoi c'est?

EDIT

#from here I get 08f0ddbfa71df43bee87d9becdec5ced4ead3419 
idOfResultWithRyanairFlight=sel.get_eval("window.jQuery('#result').find('img').filter('[alt=Ryanair]').eq(0).parents('form:first').find('a').eq(1).attr('id')") 

Je vérifie en mode débogage et:

#it returns true 
sel.is_element_present("css=#08f0ddbfa71df43bee87d9becdec5ced4ead3419") 
#it returns false 
sel.is_element_present("window.jQuery('#08f0ddbfa71df43bee87d9becdec5ced4ead3419')") 
#it return false 
sel.is_element_present("window.jQuery(#08f0ddbfa71df43bee87d9becdec5ced4ead3419)") 

Je mis cette requêtes dans la console Firebug et le premier et le deuxième travail.

EDIT

Ce qui est intéressant, j'ai écrit le même scénario en C# et j'ai le même problème.

var dOfA = selenium.GetEval("window.jQuery('#result').find('img').filter('[alt=SomeIMG]').eq(0).parents('form:first').find('a').eq(1).attr('id')"); 


      var a=selenium.IsElementPresent("window.jQuery('#" + dOfA + "').parent().find('button')"); 
      var b = selenium.IsElementPresent("$('#" + dOfA + "')"); 
      var c = selenium.IsElementPresent("jQuery('#" + dOfA + "')"); 
      var d = selenium.IsElementPresent("css=#" + dOfA); 
      var e = selenium.GetEval("window.jQuery('#" + dOfA + "')"); 

Seul d est vrai.

+0

Je suis intereset dans cela aussi, avez-vous trouvé une solution? – Alp

+0

utilise driver.find_element_by_css_selector ("# someid") – malletjo

Répondre

0

Si vous voulez utiliser un sélecteur de style CSS/jQuery dans Selenium, je pense que vous devez aller jusqu'au sélecteur CSS. En d'autres termes, vous avez besoin de quelque chose comme:

pathOfButton = "css=#" + idOfResultWithSomeImage + " ~ button" 
if (!sel.is_element_present(pathOfButton)) 
    pathOfButton = "css=button ~ #" + idOfResultWithSomeImage 

sel.click(pathOfButton) 

Il existe probablement un moyen un peu mieux de le faire; aussi, je n'ai pas programmé en python, donc ma syntaxe est peut-être désactivée. Pour plus d'informations sur le localisateur, voir this Selenium documentation page.

+0

Malheureusement cela ne fonctionne pas, ne peut pas trouver cet élément. – user278618