我有一个WebDriver测试套件,当我在普通的无头浏览器中执行它时,它的操作会有所不同。当我在无头模式下执行它时,没有找到一个元素,但是当我在正常模式下使用相同的代码、相同的驱动程序时,就会发现这个元素。我使用此标志设置无头模式:
chromeOptions.addArguments("--headless");ChromeDriver 2.31和WebDriver 3.5.2正在使用中。我如何调试这个?
发布于 2017-09-02 21:26:44
调试有两种方法。您可以获得网页源,并检查什么是不同的。
现在,当您使用Selenium启动浏览器时,它正在使用调试会话来自动化chrome。因此,您不能使用这个对您的网站执行远程调试器。
你需要手动启动铬。
chrome --headless --remote-debugging-port=9222 --disable-gpu http://tarunlalwani.com现在,在打开另一个铬和调试网站,转到http://127.0.0.1:9222和检查网站。

发布于 2019-03-21 17:18:58
要调试无头程序,请尝试在错误之前获得屏幕截图:
在Python中:
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')发布于 2020-10-09 03:29:01
对于任何努力解决这个问题的人(就像我一样),可以在selenium中使用一个名为execute_script的强大方法。
例如,我通过xpath找到一个元素并单击它:
browser.find_element_by_xpath("//li[@id='tabletid']").click()但这不是无头的。在检查元素之后,我发现按钮单击实际上执行了一个简单的javascript行。所以我把这一行换成:
js = """drawTable();
return false;"""
browser.execute_script(js)而且我还能把我的数据提取出来!现在我的脚本将在ssh,docker等中工作。
https://stackoverflow.com/questions/46017982
复制相似问题