Javascript 以没有id和类的元素为目标

Javascript 以没有id和类的元素为目标,javascript,puppeteer,Javascript,Puppeteer,建立一个Instagram机器人来熟悉木偶演员 尝试单击没有选择器的登录按钮(instagram.com在chrome中模拟iphone x) 唯一让它独特的是它的文本内容/innerHMTL的“登录”,我找不到一种基于此的目标方法。我不相信5个字符的类是静态的 我不太熟悉XPath表达式,似乎无法构建一个有效的表达式 可靠定位此按钮的最佳方法是什么 puppeteer.launch({ headless: false }) .then(async browser => {

建立一个Instagram机器人来熟悉木偶演员

尝试单击没有选择器的登录按钮(instagram.com在chrome中模拟iphone x)

唯一让它独特的是它的文本内容/innerHMTL的“登录”,我找不到一种基于此的目标方法。我不相信5个字符的类是静态的

我不太熟悉XPath表达式,似乎无法构建一个有效的表达式

可靠定位此按钮的最佳方法是什么

puppeteer.launch({
    headless: false
})
    .then(async browser => {
        const page = await browser.newPage()
        await page.emulate(puppeteer.devices['iPhone X']) //emulates iPhoneX
        await page.goto('http://www.instagram.com') 
        btn = await page.$x("Log In")    
    })
}

您可以使用该方法使用XPath构建文本匹配表达式


您可以使用该方法使用XPath构建文本匹配表达式


//button[@disabled]
//button[@type='submit']
应能工作
//button[@disabled]
//button[@type='submit']
应能工作此工作正常谢谢,我曾尝试过类似的解决方案,但不知道它也在返回数组,以防其他人偶然发现此线程,我遇到的另一个问题是在转到线上,页面在寻找按钮之前没有完全加载。我将第10行修改为wait page.goto(“{waitUntil:'networkidle0'})这非常有效谢谢你,我曾尝试过类似的解决方案,但不知道它也返回了一个数组,以防其他人偶然发现这个线程,我遇到的另一个问题是goto行,在查找按钮之前,页面未完全加载。我将第10行修改为wait page.goto(“”,{waitill:'networkidle0'})
const loginBtn= await page.$x('//*[contains(text(), "Log In")]')
await loginBtn[0].click()