Ich habe ein wenig Mühe, die Logik Selen durch eine Liste von Elementen wie eine ungeordnete Liste gehen zu gehen, klicken Sie auf einen Link, der zu einem anderen bewegt Seite und dann zurück zur ursprünglichen Seite mit dem nächsten Punkt in der Liste. Zuerst hatte ich Fehler mit den veralteten Elementen, konnte aber feststellen, dass der Browser die Elemente auf der aktuellen Seite zerstört. So habe ich versucht, durch die folgende Abhilfe zu schaffen:Bewegen Sie sich durch eine Liste von Selen-Webdriver-Objekten beim Wechseln der Seiten
list3 = driver.find_elements_by_xpath("//*[@id='treeContainer']//a[starts-with(@id, 's')]")
tempList3 = {}
for entry in list3:
tempList3[entry.get_attribute("id")] = entry.text
surveyNum = entry.get_attribute("id")
print(entry.text, entry.tag_name)
subList3 = driver.find_elements_by_css_selector("#listContainer > ul > *")
print("sublist", len(subList3))
tempMem = {}
for each in subList3:
print(each.get_attribute("id"), each.text)
tempMem[each.get_attribute("id")] = each.text
reportNum = each.get_attribute("id")
execute_click(driver, "#listContainer > ul a")
element = WebDriverWait(driver, 20).until(
lambda s: s.execute_script("return jQuery.active == 0"))
if element:
element = WebDriverWait(driver, 5).until(
EC.element_to_be_clickable((By.LINK_TEXT, "Export to CSV")))
element.click()
element = WebDriverWait(driver, 20).until(
lambda s: s.execute_script("return jQuery.active == 0"))
if element:
csvRadio = driver.find_element_by_css_selector("#exportValuesLabelsCSV3.radio")
csvRadio.click()
else:
continue
csvDownload = driver.find_element_by_css_selector(
"#butExportToCSV > table > tbody > tr > td:nth-child(1) > div > button")
csvDownload.click()
element = WebDriverWait(driver, 20).until(
EC.text_to_be_present_in_element((By.CSS_SELECTOR, '#progress_csv'),
"Export completed! Please click here if nothing happens"))
driver.find_element_by_xpath("//*[@id='emptySel']/a").click()
subList3.clear()
subList3 = driver.find_elements_by_css_selector("#listContainer > ul > *")
for items in subList3:
print("subList3", items.text)
if reportNum in tempMem:
if tempMem.get(reportNum) in items.text:
subList3.remove(items)
print("Item removed, items left:", len(subList3))
else:
continue
continue
else:
continue
tempMem.clear()
list3.clear()
list3 = driver.find_elements_by_xpath("//*[@id='treeContainer']//a[starts-with(@id, 's')]")
for listed in list3:
print("list3", listed.text)
if surveyNum in tempList3:
if tempList3.get(surveyNum) in listed.text:
list3.remove(listed)
else:
continue
else:
continue
continue
tempList3.clear()
Nach dem Ausführen es mir keine Fehler bekommen, aber es scheint, dass es nicht Schleife tut ... was habe ich übersehen?
Dies ist auf jeden Fall das Recht Ansatz für dieses Problem. Danke für die Antwort! –