NodeJS 如何在selenium中解析promise { pending }?[duplicate]

vhmi4jdf  于 2023-04-20  发布在  Node.js
关注(0)|答案(1)|浏览(93)

此问题已在此处有答案

How can I access the value of a promise?(14个答案)
4天前关闭。
我试图解决selenium中promise的返回,以获得它背后的文本/变量。使用Client.on是因为我正在编写一个discord bot来webscrap页面的某些元素。

client.on("messageCreate", async (message) => {
    if (message.author.bot) return;

    if (message.content.startsWith('!FooBar')) {

        await async function example() {

            let driver = await new Builder().forBrowser('chrome').build()

            try {
                await driver.get(FooBar);
                Title = await driver.getTitle();
                console.log('Page title:', Title);

                //No issue here
                ABC = await driver.findElement(By.xpath('//div[contains(text(), "ABC")]/following-sibling::div')).getText();
                console.log('THC Content:', THC);

                //No issue here
                imgSrc = await driver.findElement(By.css('img.logo')).getAttribute('src');
                console.log('Image source:', imgSrc);

                //here is where I encounter the problem
                Type = await driver.findElement(By.css('div.status')) 
                console.log('Type:', Type.getText());

            } catch (error) {
                console.error(`Error occurred while scraping: ${error}`)
                message.channel.send('Error during scraping');
            }
        }()
    }
})

目前console.log记录Promise { Pending }的变量行Type,而它应该记录div类status中的文本:FooBar
我已经尝试了其他堆栈溢出页面的解决方案,但似乎不能适应我的问题的解决方案。

const hi = await driver.findElement(By.css('div.status'))
hi.then((response) =>
{
    console.log(response.getText()
});

我似乎无法让.then()方法工作

hgqdbh6s

hgqdbh6s1#

我设法找到了实现.then()的正确方法

const Type = await driver.findElement(By.css('div.status')).getText().then(value =>
{
            console.log('Type:', value);
            return value
});

相关问题