【问题标题】:Launch one instance of selenium or helium driver启动一个硒或氦驱动程序实例
【发布时间】:2021-05-23 06:56:56
【问题描述】:

我正在尝试从网站下载一些图片(图片是可变的)并且我使用了以下代码

from helium import *

for i in range(3):
    driver = start_chrome("https://eservices.moj.gov.kw/searchPages/searchCases.jsp", headless=True)
    element = driver.find_element_by_xpath("//*[@id='frmCaseNo']/div[2]/img")
    driver.execute_script("arguments[0].scrollIntoView();", element)
    element.screenshot(f'Number_{i}.png')

每个循环中的代码都会启动新的驱动程序,我认为这有点慢。我怎样才能只启动一次驱动程序然后多次导航到该 url?

我试过了

from helium import *

driver = start_chrome("https://eservices.moj.gov.kw/searchPages/searchCases.jsp", headless=True)

for i in range(3):
    driver.get("https://eservices.moj.gov.kw/searchPages/searchCases.jsp")
    element = driver.find_element_by_xpath("//*[@id='frmCaseNo']/div[2]/img")
    driver.execute_script("arguments[0].scrollIntoView();", element)
    element.screenshot(f'Number_{i}.png')

这很好,但我不确定我是否正确使用相同的 url 到 start_chrome,然后使用 get 方法再次使用该 url。

【问题讨论】:

  • 为什么要循环并一次又一次地截取同一个元素?
  • 只是尝试获取一些随机数并使用另一个代码对其进行测试,以便能够提取这些验证码上的数字。

标签: python selenium helium


【解决方案1】:
from helium import *

driver =start_chrome()
for i in range(3):
    driver.get(
        "https://eservices.moj.gov.kw/searchPages/searchCases.jsp")
    element = driver.find_element_by_xpath("//*[@id='frmCaseNo']/div[2]/img")
    driver.execute_script("arguments[0].scrollIntoView();", element)
    element.screenshot(f'Number_{i}.png')

from helium import *

driver = start_chrome(
    "https://eservices.moj.gov.kw/searchPages/searchCases.jsp")
for i in range(3):
    driver.refresh()
    element = driver.find_element_by_xpath("//*[@id='frmCaseNo']/div[2]/img")
    driver.execute_script("arguments[0].scrollIntoView();", element)
    element.screenshot(f'Number_{i}.png')

你可以使用上面的方法来避免打开url两次

【讨论】:

  • 你能帮我得到这些图像上的数字吗?我尝试了几个代码,但成功的百分比只有 70% 左右
  • 我没明白你说的数字不是图片
猜你喜欢
  • 2017-03-20
  • 1970-01-01
  • 1970-01-01
  • 2019-11-27
  • 1970-01-01
  • 1970-01-01
  • 2021-05-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多