【问题标题】:How to loop a link using Selenium and Python如何使用 Selenium 和 Python 循环链接
【发布时间】:2020-08-22 19:58:23
【问题描述】:

嘿,所以我有这行代码。它应该访问谷歌并刷新页面 15 次。然后关闭驱动程序并再次打开它 15 次,然后再次关闭浏览器,依此类推。它应该一直这样做,直到程序停止。

from selenium import webdriver
import chromedriver_binary

driver = webdriver.Chrome()
count = 15

while count != 0:
    driver.get('https://google.com/')
    count -= 1
driver.close()

到目前为止,这是我的代码。任何帮助都会很棒。

【问题讨论】:

    标签: python python-3.x selenium selenium-webdriver webdriver


    【解决方案1】:

    访问网址https://www.google.com/并刷新页面15次。然后关闭驱动,再打开15次,再关闭浏览器,以此类推即可使用如下解决方案:

    • 代码块:

      from selenium import webdriver
      
      options = webdriver.ChromeOptions() 
      options.add_argument("start-maximized")
      while True:
          try:
              driver = webdriver.Chrome(options=options, executable_path=r'C:\WebDrivers\chromedriver.exe')
              driver.get('https://www.google.com/')
              for _ in range(15):
                  driver.refresh()
                  print("Page Refreshed")
              driver.quit()
          except:
              break
      
    • 控制台输出:

      DevTools listening on ws://127.0.0.1:50307/devtools/browser/d97baf5f-2088-4acf-8f1a-a6568d82c649
      Page Refreshed
      Page Refreshed
      Page Refreshed
      Page Refreshed
      Page Refreshed
      Page Refreshed
      Page Refreshed
      Page Refreshed
      Page Refreshed
      Page Refreshed
      Page Refreshed
      Page Refreshed
      Page Refreshed
      Page Refreshed
      Page Refreshed
      [8700:3392:0823/020728.931:ERROR:broker_win.cc(55)] Error reading broker pipe: The pipe has been ended. (0x6D)
      
      DevTools listening on ws://127.0.0.1:50348/devtools/browser/9113e8a1-d82b-4a87-95c9-5e82917ceeb0
      Page Refreshed
      Page Refreshed
      Page Refreshed
      Page Refreshed
      Page Refreshed
      Page Refreshed
      Page Refreshed
      Page Refreshed
      Page Refreshed
      Page Refreshed
      Page Refreshed
      Page Refreshed
      Page Refreshed
      Page Refreshed
      Page Refreshed
      
      DevTools listening on ws://127.0.0.1:50388/devtools/browser/2ce95680-edbc-4391-b516-0fb0ab136c54
      

    【讨论】:

      【解决方案2】:

      不要使用driver.get('https://google.com/') 刷新页面,而是尝试使用driver.refresh()。同时,不要使用while循环,而应该尝试使用for循环。这是我的做法

      from selenium import webdriver
      import chromedriver_binary
      
      driver = webdriver.Chrome()
      
      for iters in range(15):
          driver.refresh()
      driver.close()
      

      希望这有帮助!

      【讨论】:

      • 如果我想刷新,这很有帮助,但我不知道我正在开发一个工作项目并且无法共享代码。但它与此非常相似,只是它访问另一个网页。抱歉,如果我不清楚。
      • 哦。我以为你必须刷新页面!不用担心。只需将 while 循环更改为 for 循环。除此之外,你做得对
      【解决方案3】:

      你离你想要达到的目标不远了,挑战是你while循环的终止条件,写while count != 0,你要求你的循环从15开始运行count的所有值到负无穷但跳过 0。这应该让你的程序无限运行。 你可以通过这种方式更好地完成它:

      from selenium import webdriver
      import chromedriver_binary
      
      driver = webdriver.Chrome()
      count = 15
      while count > 0:
          driver.get('https://google.com/')
          count -= 1
      driver.close()
      

      所以一旦count 小于 1,您的循环就会终止

      【讨论】:

      • 但我想循环多次。这段代码不会在刷新 15 次后才结束吗?我希望代码在每 15 次刷新后重新启动网络驱动程序
      猜你喜欢
      • 1970-01-01
      • 2017-08-06
      • 2020-04-14
      • 1970-01-01
      • 1970-01-01
      • 2019-08-31
      • 2021-08-21
      • 1970-01-01
      • 2022-08-11
      相关资源
      最近更新 更多