1

J'ai une page avec une liste déroulante dans laquelle vous pouvez passer d'une option à l'autre et une nouvelle page que j'essaie d'automatiser. Cependant, sur Safari/Edge, la fonction de sélection ne change jamais l'option. J'ai essayé d'employer des méthodes de .click aussi bien qu'exécutant un manuscrit pour changer l'attribut sur «sélectionné». Dans Chrome/FF/IE cela fonctionne très bien. J'ai enveloppé la fonction dans une prise d'essai et il n'y a pas d'erreurs présentes, ça ne fait rien. Qu'est-ce que je fais mal ici?Selenium Sélectionnez la valeur de la liste déroulante qui ne fonctionne pas dans Edge/Safari mais qui fonctionne dans d'autres navigateurs

from selenium.webdriver.common.by import By 
from selenium.webdriver.support.ui import WebDriverWait, Select 
from selenium.webdriver.support import expected_conditions as EC 

def test_safari_edge(self): 
    try: 
     WebDriverWait(self.driver, 10).until(
      EC.presence_of_element_located(self.tp.org_dropdown_options) 
     ) 
     select = Select(self.tp.find_element_by(By.CSS_SELECTOR, 'div.js-org-switcher.org-name-wrapper > select')) 
     select.select_by_value('myorg') 
    except Exception as e: 
     print(e) 

Répondre

0

Je suis en cours d'exécution sur différents tests de navigateurs différents OS et les tests sur chacun, mais je l'ai trouvé ce problème en utilisant Safari WebDriver.

version Sélénium actuelle: 3.6

Après une recherche et d'essayer quelques conseils comme la mise à jour du WebKit de MacOS ou en utilisant Select() de plusieurs façons, je l'ai décidé d'utiliser JavaScript.

@when(u'I set the example dropdown to "{option}"') 
def step_impl(context, option): 
    selenium = context.selenium 

    selenium.execute_script(u"""                        
     $("select[name='dropdown']").val('{0}');                  
    """.format(option)); 

Fonctionne parfaitement dans tous les navigateurs en attente d'une solution WebDriver.