У меня возникли проблемы с попыткой собрать логику селена, проходящего через список элементов, таких как неупорядоченный список, щелкните ссылку, которая перемещается в другую затем перейдите к исходной странице, следуя следующему элементу в списке. Сначала у меня были ошибки с элементами, которые были устаревшими, но были в состоянии найти с некоторым взглядом, что, когда браузер уничтожает элементы на текущей странице, они становятся устаревшими. Таким образом, я попытался исправить это следующим:Перемещение по списку объектов селенового webdriver при переключении страниц
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()
После запуска это я не получаю никаких ошибок, однако, кажется, что это не петля ... Что бы я проглядел?
Это, безусловно, право подход к этой проблеме. Спасибо, что ответили! –