首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用无头浏览器进行调试

用无头浏览器进行调试
EN

Stack Overflow用户
提问于 2017-09-02 20:39:11
回答 3查看 10.2K关注 0票数 9

我有一个WebDriver测试套件,当我在普通的无头浏览器中执行它时,它的操作会有所不同。当我在无头模式下执行它时,没有找到一个元素,但是当我在正常模式下使用相同的代码、相同的驱动程序时,就会发现这个元素。我使用此标志设置无头模式:

代码语言:javascript
复制
chromeOptions.addArguments("--headless");

ChromeDriver 2.31WebDriver 3.5.2正在使用中。我如何调试这个?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-09-02 21:26:44

调试有两种方法。您可以获得网页源,并检查什么是不同的。

现在,当您使用Selenium启动浏览器时,它正在使用调试会话来自动化chrome。因此,您不能使用这个对您的网站执行远程调试器。

你需要手动启动铬。

代码语言:javascript
复制
chrome --headless --remote-debugging-port=9222 --disable-gpu http://tarunlalwani.com

现在,在打开另一个铬和调试网站,转到http://127.0.0.1:9222和检查网站。

票数 7
EN

Stack Overflow用户

发布于 2019-03-21 17:18:58

要调试无头程序,请尝试在错误之前获得屏幕截图:

在Python中:

代码语言:javascript
复制
WINDOW_SIZE = "1200,900" opts.add_argument("--window-size=%s" % self.WINDOW_SIZE) 
if self.HEADLESS:   opts.add_argument('--headless')     
self.driver = webdriver.Chrome(executable_path=chromedriver,options=opts)  


 driver.save_screenshot('./foto.png')
票数 1
EN

Stack Overflow用户

发布于 2020-10-09 03:29:01

对于任何努力解决这个问题的人(就像我一样),可以在selenium中使用一个名为execute_script的强大方法。

例如,我通过xpath找到一个元素并单击它:

代码语言:javascript
复制
browser.find_element_by_xpath("//li[@id='tabletid']").click()

但这不是无头的。在检查元素之后,我发现按钮单击实际上执行了一个简单的javascript行。所以我把这一行换成:

代码语言:javascript
复制
js = """drawTable();
            return false;"""
    
browser.execute_script(js)

而且我还能把我的数据提取出来!现在我的脚本将在ssh,docker等中工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46017982

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档