【问题标题】:How to click button based on user input?如何根据用户输入单击按钮?
【发布时间】:2021-06-19 17:21:56
【问题描述】:

例如网站:https://www.jdsports.com.sg/product/white-adidas-ultraboost-21-primeblue-womens/16140531_jdsportssg/

const size = prompt('Size? ')
page.evaluate(size => {
const elements = [...document.querySelectorAll('btn btn-default  ')];
const targetElement = elements.find(e => e.innerText.includes(size));
targetElement && targetElement.click();
}, size);

我正在使用 puppeteer。 目前,我正在尝试根据用户输入自动点击尺寸。以上是我目前的代码,但它不起作用。

这是产品尺寸按钮 html 的方式:

<button data-e2e="pdp-productDetails-size" type="button" class="btn btn-default  " data-price="SGD 260.00" data-sku="16140531_jdsportssg.2910757" data-upc="4064036981142" data-fulfilment-infopage="" data-pool=" 1 " data-stockcheckeravailable="0" data-stock="1" title="Select Size 4">
            4
    </button>

所以我试图根据文本单击按钮。提前谢谢!

【问题讨论】:

    标签: javascript css node.js puppeteer webautomation


    【解决方案1】:

    你可以这样试试。

    await page.evaluate(size => {
      Array.from(document.getElementsByClassName('btn btn-default')).filter(e => {
        return e.innerText == size
      }).forEach(element => {
        if (element) element.click();
      });
    }, size);
    

    顺便说一句,如果您要使用 e.innerText.includes(size) 并且有人在提示符中输入了 5 号,它将检查选择器中是否有任何包含 5 号的内容。

    例如:

    有 4、4.5、5、5.5、6、6.5 码,我选择 5 码。

    e.innerText.includes('5') 将选择其中包含数字 5 的任何一个,因此它甚至可以选择 4.5 的大小。

    你可以试试。

    await page.evaluate(size => {
      const elements = [...document.querySelectorAll('#itemOptions .options .btn')];
      const targetElement = elements.find(e => e.innerText == size);
    }, size);
    

    你也可以用。

    await page.evaluate(size => {
      Array.from(document.querySelectorAll('#itemOptions .options .btn')).filter(e => e.innerText == size).forEach(e => e.click());
    }, size)
    

    【讨论】:

    • 我该如何实现底部 2 代码对不起,我对 puppeteer 有点陌生。
    • 和一般的编码刚开始一个月前哈哈@entlassungspapi
    【解决方案2】:

    类选择器需要点而不需要空格。试试

    const elements = [...document.querySelectorAll('.btn.btn-default')];
    

    而不是

    const elements = [...document.querySelectorAll('btn btn-default  ')];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-30
      • 2021-06-21
      • 2018-01-13
      • 1970-01-01
      • 2018-07-28
      • 2017-02-17
      • 2012-09-12
      • 1970-01-01
      相关资源
      最近更新 更多