如何在不重新启动浏览器的情况下测试Selenium自动化?

时间:2018-02-23 17:06:47

标签: python selenium automation

假设我有以下代码:

from selenium import webdriver

if __name__ == '__main__':

    def open_YouTube():
        browser = webdriver.Firefox()
        browser.get("http://www.google.pl")
        fill_search(browser)

    def fill_search(browser):
        elements = browser.find_elements_by_tag_name('input')
        for element in elements:
            if 'what are you looking for' in element.get_attribute('innerHTML'):
                search_box = element
                search_box.get_attribute('value') == 'happiness'



    open_YouTube()

现在,假设我犯了一个错误或想要更改函数fill_search中的任何内容,有没有办法只测试该函数,而不从头开始运行代码并重新打开浏览器?

例如,在我通过VBA的Internet Explorer自动化中,我有一个功能,可以通过名称或URL识别当前打开的浏览器实例。我可以运行这个函数,只测试我想要纠正的代码,处理已打开的浏览器实例。

通过Selenium可以达到类似的效果吗?

1 个答案:

答案 0 :(得分:2)

有简单的(推荐的)方式和复杂的方式。

易:

只需导入pdb并在浏览器会话中体验功能。一旦所有内容都按预期工作,请更新代码并删除pdb行。

def fill_search():
        import pdb; pdb.set_trace()  # Experiment in the browser session
        for element in elements:
            element = driver.find_element_by_tag('input')
            if 'what are you looking for' in element.get_attribute('innerHTML'):
                search_box = element
                search_box.get_attribute('value') == 'happiness'

复合物:

driver = webdriver.Firefox()
session_id = driver.session_id
executor_url = driver.command_executor._url
same_session_driver = webdriver.Remote(command_executor=executor_url, desired_capabilities={})
same_session_driver.session_id = session_id
same_session_driver.continue_doing_stuff