Python Selenium Do-While 循环

标签 python selenium web-scraping while-loop do-while

我正在尝试使用以下代码完成 do-while 循环。我们正在等待报告处理,只有在完成后并单击检索按钮后,该报告才会显示在网页上。代码,

# Go to list and click retrieve
driver.find_element(By.CSS_SELECTOR, "#j_idt40Lbl").click()
time.sleep(20) # takes a while for their side to run
retrieve = driver.find_element_by_css_selector("#tab_reportList\:listPgFrm\:listPgRetrBtn")
retrieve.click() ### Do this action ###
time.sleep(5)
retrieve.click()
time.sleep(5)
retrieve.click()
time.sleep(3)

# Click report file
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "#tab_reportList\:listPgFrm\:listDataTable_0\:0\:reportLink"))).click() 
### Until this is visible ###

最佳答案

如果最终变得可见的元素最初并未出现在页面上,您的代码可能如下所示:

driver.find_element(By.CSS_SELECTOR, "#j_idt40Lbl").click()
time.sleep(20)
while True:
    driver.find_element_by_css_selector("#tab_reportList\:listPgFrm\:listPgRetrBtn").click()
    time.sleep(5)
    if driver.find_elements_by_css_selector("#tab_reportList\:listPgFrm\:listDataTable_0\:0\:reportLink"):
        WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "#tab_reportList\:listPgFrm\:listDataTable_0\:0\:reportLink"))).click()
        break

5 秒和 20 秒的硬编码 sleep 看起来不太好。如果可能的话,它们应该通过预期条件显式等待进行更改

关于Python Selenium Do-While 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70926866/

相关文章:

python - 不在实时服务器上托管编译器的原因是什么?

python - 获取 np.nonzero 中 numpy 2d 切片的原始行

javascript - CasperJS 动态选择列表

python - 如何在Python中列出一个对象的所有属性?

python - 错误: Failed to enable GUI event loop integration for 'qt' while importing pandas

javascript - 想要使用 Scrapy 抓取网站,但不确定是否有绕过 javascript 的方法

java - 元素位置中的 Xpath 问题

python - 在 Python 和 Selenium WebDriver 中打开受密码保护的页面

python - 使用 BeautifulSoup 抓取亚马逊网页