【问题标题】:Python Playwright pagelocator pass variablePython Playwright 页面定位器传递变量
【发布时间】:2022-10-07 01:06:40
【问题描述】:

我制作了一个从网站下载 zip 文件的脚本。该脚本需要找到正确的链接并下载文件。

我用 codegen 生成了脚本,它可以工作,但是文件名是硬编码的。

我希望脚本找到正确的链接,不带日期(文件名 = \"2022-09-26_TEST.zip\")。所以脚本需要用 TEST 检测文件并下载。

我不知道该怎么做。我已经尝试过传递一个变量,但它似乎不起作用。

如何将变量传递给定位器并让它搜索一段文件名(包含)?

    with page.expect_download() as download_info:
        page.locator(\"text=2022-09-26_TEST.zip\").click()
        download = download_info.value
        page.wait_for_url(\"http://192.xx\")
        download_filepath = os.path.join(download_path, suggested_filename)
        download.save_as(download_filepath)
        context.close()
        browser.close()



<tbody>
  <tr>
    <td>10386</td>
    <td>TEST</td>
    <td></td>
    <td>491</td>
    <td>finished</td>
    <td>
      <a class=\"text-primary\" href=\"./Exports.php?downloadId=10386\">2022-09-26_TEST.zip</a>
    </td>
    <td>2022-09-26 10:17:03</td>
    <td>2022-09-26 10:18:11</td>
    <td>0</td>
    <td>TEST</td>
  </tr>
  • 相关的 HTML 是什么样的?什么页面?谢谢。
  • 链接在表格中。我添加了html。

标签: python playwright playwright-python


【解决方案1】:

阅读您的问题,我了解您的问题不是下载本身,您的问题是单击所需链接的方式。

从那一刻起,您必须选择:

1 - 您知道日期(确切的文本):

date = "2022-09-26"
with page.expect_download() as download_info:
    page.locator(f"//a[text()='{date}_TEST.zip']").click()
    download = download_info.value
    page.wait_for_url("http://192.xx")
    download_filepath = os.path.join(download_path, suggested_filename)
    download.save_as(download_filepath)
    context.close()
    browser.close()

如您所见,您可以将f"..{}.." 用于定位器字符串,以便为定位器使用一些变量,基本上定位器是一个字符串

2 - 您不知道日期(包含文本):

with page.expect_download() as download_info:
    page.locator(f"//a[contains(text(),'_TEST.zip')]").click()
    download = download_info.value
    page.wait_for_url("http://192.xx")
    download_filepath = os.path.join(download_path, suggested_filename)
    download.save_as(download_filepath)
    context.close()
    browser.close()

老实说,我认为不需要page.wait_for_url("http://192.xx") 这一行。 Playwright 会等待你的下载,实际上你不需要等待 url,我想。

【讨论】:

    猜你喜欢
    • 2015-03-20
    • 2015-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-07
    • 2014-07-07
    相关资源
    最近更新 更多