2013-04-04 2 views
1

Можно ли использовать Selenium WebDriver для предварительного заполнения буфера обмена некоторым текстом, который нужно вставить, как если бы текст был скопирован в другое приложение? (Идеально использовать привязки Python?)Прямая манипуляция буфером обмена с Selenium WebDriver

ответ

2

Нет, похоже, нет - в качестве браузера инструмент для обработки, Selenium предназначен для выполнения функций, уникальных для браузеров. В общем, манипуляция с буфером обмена является функцией, обрабатываемой файловым менеджером , обычно с графическим интерфейсом, таким как проводник Windows или Mac OS Finder.

: способы для различных интерфейсов Selenium (Java, Python и т. Д.) Для доступа к функциям буфера обмена, но они работают только в том случае, если рассматриваемый браузер работает в контексте, который их содержит. Если Selenium работает без головок (что означает отсутствие графического интерфейса пользователя, например, с использованием виртуального дисплея, такого как Xvfb, возможно, как часть виртуальной машины), не может быть никакого доступного контекста с функциональностью буфера обмена, а сам Selenium сам по себе не предоставляет.

2

Вы можете сделать так, чтобы «предварительно заполнить» буфер обмена, чтобы выполнить шаги, которые пользователь выполнил, чтобы скопировать его в буфер обмена.

один из способов сделать это (при условии, что у вас есть текст, который вы хотите скопировать), чтобы открыть URL-адрес, содержащий текст, нажмите клавиши «ctrl-a», когда тело имеет фокус, затем нажмите клавиши « Ctrl-C»

driver.findElements(By.tagname("body")).type(Keys.chord(keys.control, 'a')); 
driver.findElements(By.tagname("body")).type(Keys.chord(keys.control, 'c')); 

вы, возможно, придется поставить сон между каждым шагом, так что ОС есть время, чтобы фактически выполнить операцию копирования - я считаю, что иногда, селен работает слишком быстро.

Смежные вопросы