假设我有以下代码:
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可以达到类似的效果吗?
答案 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