stdout, захваченный из команды, имеет вдвое больше новых строк при переходе на селен - PullRequest
1 голос
/ 14 января 2020

У меня есть немного кода, который я пытаюсь захватить стандартный вывод:

def MediaInfo():
    cmd= ['MediaInfo.exe', 'videofile.mkv']
    test = subprocess.run(cmd, capture_output=True)
    info = test.stdout.decode("utf-8")
    print (info)

При использовании print или записи его в файл, это выглядит хорошо. Но когда я использую селен, чтобы заполнить его в окне сообщения:

techinfo = driver.find_element(By.NAME, "techinfo").send_keys(info)

, между каждой строкой появляется дополнительная пустая строка. Первоначально у меня была проблема, когда stdout был байтовым литералом. Это выглядело как b"This is the first line.\r\nThis is the second line.\r\n" Добавление .decode("utf-8") - это то, что исправило это, но мне интересно, если в некоторых случаях что-то интерпретирует \r\n как создание двух строк. Я просто не уверен, что это проблема с Selenium, подпроцессом или чем-то еще. Элемент веб-страницы, на который пишет Selenium, похоже, не имеет проблем. Это выглядит правильно, если я скопирую и вставлю его из текстового файла. Это означает, что это не просто способ отображения, а на самом деле в два раза больше переводов строки. Любые идеи? Я не хочу просто l oop и удалить лишние строки. Слишком глупый. Я предполагаю, что это проблема с Python 3 из того, что я прочитал.

1 Ответ

2 голосов
/ 14 января 2020

send_keys () будет отправлять каждый ключ индивидуально, что означает, что «\ r \ n» отправляется как два нажатия клавиш. Замена "\ r \ n" на "\ n" перед отправкой элементу должна помочь.

...