You should try using css_selector to find desire element in one find statement as below :-
line = dr.find_element_by_css_selector('div.product-name > span').text
If you're still getting empty string try using get_attribute("textContent") as :-
line = dr.find_element_by_css_selector('div.product-name > span').get_attribute("textContent")
Or using get_attribute("innerHTML") as :-
line = dr.find_element_by_css_selector('div.product-name > span').get_attribute("innerHTML")
Note :- You can also use above operation to getting innerText on parent <div> element using class_name if there is only desire text as :-
line = dr.find_element_by_class_name('product-name').text
Or
line = dr.find_element_by_class_name('product-name').get_attribute("textContent")
line = dr.find_element_by_xpath('//div[@class="product-name"]/span').text. If it still doesn't work, it may be a synchronization issue (wait for element instead of searching for it)