2017-05-05 6 views
0

Hallo Ich versuche Selen zu verwenden, um ein Element aus einem Dropdown-Menü mit dem tatsächlichen Text nicht die Wertoption auszuwählen. Mein Skript zieht Zustände aus einer Liste und durchläuft die Zustände, die das Dropdown-Feld auswählen, das der Liste entspricht. Wenn ich den folgenden Code versuchen, wirft er einen Fehler aus:Selen Auswahl durch sichtbaren Text in Python

for agentinfo1, agentstate1 in zip(agentinfo, agentstate): 
    select2 = driver.find_element_by_css_selector("#selst" %agentstate1) 
    select2.click() 

select2 = driver.find_element_by_css_selector("#selst" %agentstate1) TypeError: not all arguments converted during string formatting

Ich frage mich, ob der Fehler becuase heraus geworfen wird, wenn ich die Daten greifen, die ich in meiner Liste habe ich anhängen ein „\ n "aber selbst wenn ich diesen Code herausnehme, funktioniert es nicht.

Antwort

0

Sie verwenden CSS-IDs anstelle von CSS-Klassen. select2 ist Zeiger auf das ausgewählte Element, wenn Ihr Text ist genau die gleiche wie in der Variable

from selenium.webdriver.support.ui import Select 

for agentinfo1, agentstate1 in zip(agentinfo, agentstate): 
    select2 = Select(self.driver.find_element_by_id("<some id of the select element>")).select_by_visible_text(agentstate) 

wenn es nur teilweise Übereinstimmung ist, können Sie diese (Groß- und Kleinschreibung teilweise Übereinstimmung) versuchen:

from selenium.webdriver.support.ui import Select 

for agentinfo1, agentstate1 in zip(agentinfo, agentstate): 
    select2 = Select(self.driver.find_element_by_id("<some id of the select element>")) 
    for each_option in select2.options: 
     if agentstate.lower in each_option.text.lower: 
      select2.select_by_index(int(each_option.get_attribute("value")))