Question: I am automating whatsapp messages and would like to send them out through a tkinter window. In this tkinter window I have created a message box with the help of .label() and I am able to connect to whatsapp web through selenium. 

Currently, I am able to send out messages already, but without emojis. When I include emojis, I get this error "Chromedriver only supports characters in the BMP". How can I include emojis?

Answer: 
This error message...

```
selenium.common.exceptions.WebDriverException: Message: unknown error: ChromeDriver only supports characters in the BMP

```

...implies that the **ChromeDriver** was unable to send the **emoji** signal through `send_keys()` method.

[ChromeDriver only supports characters in the BMP](https://bugs.chromium.org/p/chromedriver/issues/detail?id=2269) is a known issue with *Chromium* team as *ChromeDriver* still doesn't support characters with a Unicode after `FFFF`. Hence it is impossible to send any character beyond `FFFF` via ChromeDriver. As a result any attempt to send **SMP** characters (e.g. *CJK*, *Emojis*, *Symbols*, etc) raises the error.

---

Alternative
-----------

A potential alternative would be to use *GeckoDriver* / *Firefox*.

* Code Block:

```
  from selenium import webdriver
  from selenium.webdriver.support.ui import WebDriverWait
  from selenium.webdriver.common.by import By
  from selenium.webdriver.support import expected_conditions as EC

  driver = webdriver.Firefox(executable_path=r'C:\Utility\BrowserDrivers\geckodriver.exe')
  driver.get('https://www.google.com/')
  # Chineese Character
  WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.NAME, "q"))).send_keys("")
  # Emoji Character
  WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.NAME, "q"))).send_keys("")

```
* Browser Snapshot:

[![Emoji](https://i.stack.imgur.com/6Sih9.png)](https://i.stack.imgur.com/6Sih9.png)

You can find a relevant discussion in [OpenQA.Selenium.WebDriverException: 'unknown error: ChromeDriver only supports characters in the BMP while sending an emoji through C# Selenium](https://stackoverflow.com/questions/50439197/openqa-selenium-webdriverexception-unknown-error-chromedriver-only-supports-c)

---

Outro
-----

A few links:

* [Full Emoji List](https://unicode.org/emoji/charts/full-emoji-list.html)
* [Unicode character inspector](https://apps.timwhitlock.info/unicode/inspect?s=%F0%9F%92%A9)
Copy & Paste it !!!
It was so easy to round on this issue by copying the text to the clipboard and then pasting it into the element.
[![pasting a text that contains emojis](https://i.stack.imgur.com/X9GFT.png)](https://i.stack.imgur.com/X9GFT.png)

```
import pyperclip
from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys

driver = webdriver.Chrome()
driver.get("https://google.com")
title = driver.title
assert title == "Google"

driver.implicitly_wait(0.5)

search_box = driver.find_element(by=By.NAME, value="q")

pyperclip.copy("Hi  This is a test message ! ")
act = ActionChains(driver)
act.key_down(Keys.CONTROL).send_keys("v").key_up(Keys.CONTROL).perform()

```