【发布时间】:2021-07-25 03:36:59
【问题描述】:
我有一个包含 10 个元素的列表。当我在列表中找到匹配项时,我想单击该元素。如果没有元素匹配,我想转到“下一页”。 (实际上是同一个页面,但是列表中加载了新的异步列表元素。两个列表具有相同的 xpath。)然后我想搜索新页面并单击一个元素,如果它匹配。代码如下:
for xpath in list: # loop through elements
element = WebDriverWait(driver, 40).until(EC.presence_of_all_elements_located((By.XPATH, xpath)))
element = driver.find_element_by_xpath(xpath) # element fresh each time! no staleness here
match = re.search(patternForFindingListItem, element.text) #if match then click on the element/item
if match:
element.click()
break
if match == None: #want to go to next 10 items (notes) on "next page" (it is the same page but new loaded data via JavaScript) via next-button to see if there is a match there
elementButton = driver.find_element_by_xpath(xpathNextButton)
elementButton.click()
问题是它在 for 循环在“第一页”上完成之前到达“下一页”。我们如何才能等待循环完成才能进入下一页?
【问题讨论】:
-
尝试将第二个
if语句放入for循环中 -
执行
element.click()时会发生什么?我在想,如果发生element.click()或您定义的其他内容,您可能需要等待一段时间才能单击下一步按钮。