Debugging with headless browser

后端 未结 3 1503
耶瑟儿~
耶瑟儿~ 2020-12-16 21:57

I have a WebDriver testsuite, which operates different when I execute it in normal and headless browser. There is an element which is not found when I execute i

相关标签:
3条回答
  • 2020-12-16 22:08

    for debugging headless, try to get an screenshot before the error:

    in 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')
    
    0 讨论(0)
  • 2020-12-16 22:08

    for anyone struggling with this (as i was), there's a powerful method you can use in selenium called execute_script.

    as an example, i was finding an element by xpath and clicking on it:

    browser.find_element_by_xpath("//li[@id='tabletid']").click()
    

    but this wasn't working in headless. after inspecting the element i found out the button click actually executes a simple javascript line. so i replaced this line with:

    js = """drawTable();
                return false;"""
        
    browser.execute_script(js)
    

    and i was able to actually pull my data! now my script will work in ssh, docker, etc.

    0 讨论(0)
  • 2020-12-16 22:24

    There are two ways to debug. You can get Page Source and check what is different.

    Now when you launch a browser using Selenium, it is using the Debugging session to automate chrome. So you can't do a remote debugger to your website using this.

    You need to launch chrome manually.

    chrome --headless --remote-debugging-port=9222 --disable-gpu http://tarunlalwani.com
    

    Now in open another chrome and debug the site by going to http://127.0.0.1:9222 and inspect the site.

    0 讨论(0)
提交回复
热议问题