2017-12-07 6 views
0

Ich versuche, die Dropdown-Liste und wählen Sie ein Element über Webdriver in Python. Was genau ich meine ist, Drop-down von "Kalender" öffnet, blättern Sie zu "1990" Jahr und wählen Sie es dann aus. Aber nicht in der Lage es zu tun.Scroll nicht möglich und wählen gewünschte Jahr von Kalender in WebDriver Python

def setUp(self): 
    driverlocation ="/Users/new/Documents/Learning/Drivers/selenium-2.53.1/py/selenium/webdriver/chromedriver" 
    os.environ["webdriver.chrome.driver"] = driverlocation 
    self.driver = webdriver.Chrome(driverlocation) 


def test_data(self): 
    driver = self.driver 
    url = "https://goods.theentertainerme.com/" 
    driver.get(url) 
    driver.maximize_window() 
    driver.implicitly_wait(10) 
    self.DateofBirth = driver.find_element_by_id("registrationform-date_of_birth") 
    self.DateofBirth.click() 
    Month = driver.find_element_by_xpath("//*[@id='ui-datepicker-div']/div/div/select[1]/option[6]") 
    Month.click() 

    Year= driver.find_element_by_xpath("//*[@id='ui-datepicker-div']//div/select[2]") 
    YearList = driver.find_elements_by_xpath("//*[@id='ui-datepicker-div']//div/select[2]") 
    Year.click() 
    Year1990= driver.find_element_by_xpath("//*[@id='ui-datepicker-div']//div/select[2]/option[28]") 
    driver.execute_script ("return arguments[0].scrollIntoView();",Year1990) 

Kann mir jemand dabei helfen?

+0

Ich glaube nicht das doppelte "//" sind benötigt vor dem div, nur einer wird zB genügen/div anstelle von // div – Danny

+0

Es ist nicht so, du kannst es benutzen. Ich habe in vielen von ihnen verwendet und Elemente wurden gegründet. –

+0

Okay, das ist in Ordnung, wenn sie beide funktionieren, ist es vielleicht am besten, sie alle konsistent zu machen. Erhalten Sie auch irgendwelche Stack-Trace-Fehler, wenn Sie den obigen Code ausführen? – Danny

Antwort

0

versuchen, etwas wie folgt aus:

Year1990 = driver.find_element_by_xpath("//*[@id='ui-datepicker-div']/div/select[2]/option[28]") 
ActionChains(driver).move_to_element(Year1990).click(Year1990).perform() 

Hinweis: Ich habe die doppelte "//" bewegt, bevor div zu sein "/" z.B./Div instad von // div

Oder ...

Year1990 = driver.find_element_by_xpath("//*[@id='ui-datepicker-div']/div/select[2]/option[28]") 
actions = ActionChains(driver) 
actions.move_to_element(Year1990).Perform() 
Year1990.click() 

auf Aktionen Weitere Informationen 7.2 der folgenden Dokumentation http://selenium-python.readthedocs.io/api.html

Verwandte Themen