Selenium send_keys не отправил апостроф - PullRequest
3 голосов
/ 30 января 2020

В Selenium я хочу ввести тестовую строку "hello'world", но текстовое поле веб-страницы становится "helloworld". Как будто апостроф не существует. Замена "'" на chr(39) или разбиение строки также не справляются с работой.

  • Моя часть кода: (использование Chrome webdriver в python)
driver = webdriver.Chrome()
driver.get("https://google.com")
text = "hello'world"
textbox = driver.find_element_by_xpath('//* 
[@id="tsf"]/div[2]/div[1]/div[1]/div/div[2]/input')
for i in text:
    textbox.send_keys(i)
    sleep(0.1)
  • Скриншот браузера: Browser screenshot

Ответы [ 2 ]

1 голос
/ 30 января 2020

Чтобы отправить последовательность символов hello'world в поле поиска Домашняя страница Google , вам нужно вызвать WebDriverWait для element_to_be_clickable() и вы можете использовать следующую Стратегию локатора :

  • Использование CSS_SELECTOR:

    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.get("https://google.com")
    text = "hello'world"
    textbox = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.NAME, "q")))
    for i in text:
        textbox.send_keys(i)
    
  • Снимок браузера:

apostrophe


Обновление

Похоже, ранее были некоторые проблемы с настройками неамериканской клавиатуры и символы Юникода при вызове send_keys(). Вы можете найти пару соответствующих обсуждений в:

Эта проблема была решена с помощью коммита Исправление кодировки полезной нагрузки, передаваемой концентратором узлу .

Использование Selenium v3.5.3 должно решить эту проблему.


tl; dr

Изменить раскладку клавиатуры

0 голосов
/ 10 февраля 2020

Решение: Изменено с Chromedriver на Firefox с использованием geckodriver. Одинарные и двойные кавычки, похоже, в текущей версии Chromedriver не работают.

...