我想用Puppeteer检查DOM元素是否可见和纯JavaScript(不是jQuery),我该怎么做?我所说的可见是指元素通过CSS显示,而不是隐藏(例如display:none)。例如,我可以通过CSS规则display:none来判断我的元素#menu是否被隐藏,方法如下:constisNotHidden=awaitpage.$eval('#menu',(elem)=>{returnelem.style.display!=='none'})一般而言,我如何确定元素是否隐藏,而不仅仅是通过display:none? 最佳答案 我
如果您没有设置JWT_TOKEN,我们有一些路由逻辑可以将您踢到主页...我想在页面加载之前/调用js之前设置它。我该怎么做? 最佳答案 你必须像这样注册localStorage项目:awaitpage.evaluate(()=>{localStorage.setItem('token','example-token');});您应该在page.goto页面之后执行此操作-浏览器必须有一个url才能在其上注册本地存储项目。在此之后,再次进入同一页面,这次token应该在页面加载之前就在这里。这是一个完整的示例:constpuppet
我使用ws端点连接到浏览器(puppeteer.connect({browserWSEndpoint:''}))。当我启动最终连接到的浏览器时,有没有办法以隐身方式启动它?我知道我可以做这样的事情:constincognito=awaitthis.browser.createIncognitoBrowserContext();但隐身session似乎与最初打开的浏览器相关联。我只希望它独立存在。我也看到你可以这样做:constbaseOptions:LaunchOptions={args:['--incognito']};但我不确定这是否是最好的方法。如有任何建议,我们将不胜感激。谢谢
是否有可能像视口(viewport)大小一样设置浏览器(Chrome[ium])窗口大小?当浏览器没有正常运行并且我想直观地看到浏览器实例中发生了什么时,仅设置视口(viewport)会导致外观不方便。所以我想要如下内容:constbrowser=awaitpuppeteer.launch({headless:false,//ThebrowserisvisibleignoreHTTPSErrors:true}),page=awaitbrowser.newPage();//ThisiswellexplainedintheAPIawaitpage.setViewport({width:op
是否可以监听页面内对象派发的事件?假设我在要访问的页面中有这段代码:varevent=newCustomEvent('status',{detail:'ok'});window.addEventListener('status',function(e){console.log('status:',e.detail);});setInterval(window.dispatchEvent,1000,event);我希望能够监听由窗口对象(或与此相关的任何其他JS对象)分派(dispatch)的事件。我如何在Puppeteer中执行此操作? 最佳答案
我尝试启动一个浏览器并根据需要使用它,但我不知道如何将其设置为变量。//returnpromisepuppeteer.launch()这个://It'snotworkingletbro;puppeteer.launch().then(res=>bro=res);这个://It'snotworkingtooletbro;puppeteer.launch().then(res=>bro=res);while(bro===undefined){}bro.newPage();请告诉我如何启动浏览器并在需要时使用它://letbro//launchbrowserbro.newPage()...例
我正在使用rspec来测试一些页面,并且想使用click方法。但是DOM没有链接或按钮。它只是一个跨度,神奇地变成了javascript的链接。Feedbackrspec提供“click_link”和“click_button”有什么想法可以点击span吗? 最佳答案 你应该可以做到find('.feedbackLink').clickfind返回一个Element,Element类有一个#click方法。因为您可能在Javascript中处理点击,所以不要忘记添加:js=>true作为测试的元标记。
我在我的网页中为盲人和键盘用户提供了跳转链接,这些链接已移出视口(viewport)以在视觉上隐藏它们;当他们获得焦点时,他们会被移动到视口(viewport)中。我想使用RSpec和Capybara测试此行为,但不知何故不起作用。it'movesthefocustothenavigationwhenactivatingthecorrespondinglink',js:truedoexpect(page).not_tohave_css'#main:focus'page.evaluate_script"$('#jump_to_content>a').focus()"click_link'
我想知道是否有与Selenium类似的方法来等待特定元素的文本出现。我试过这样的事情,但它似乎没有等待:awaitpage.waitForSelector('.count',{visible:true}); 最佳答案 您可以使用waitForFunction。参见https://github.com/GoogleChrome/puppeteer/blob/master/docs/api.md#pagewaitforfunctionpagefunction-options-args包括@elena的答案完整性解决方案:awaitpag
我正在使用chromedp来测试我的基于Go的网站。虽然我设法用它进行了基本的登录测试,但当我尝试注销我刚刚登录的帐户时遇到CSRF错误。这是获取CSRF错误的测试函数及其主要助手。httpServerURL是正在运行的实时网络服务器或httptest.Server.URL的基本URL(无论哪种方式,我都会收到相同的CSRF错误):funcTestSignupDuplicate(t*testing.T){ctx,cancel:=context.WithTimeout(context.Background(),3*time.Second)defercancel()ctx,cancel=c