Не удается отправить ключи в td в selenium python (входной тег недоступен)

#python #selenium #automation

#python #selenium #автоматизация

Вопрос:

Я могу найти элемент и щелкнуть по нему:

 driver.find_element_by_xpath("//*[@id='tinymce']/table/tbody/tr[2]/td[1]").click()
  

Когда я пытаюсь отправить ему ключи с:

 driver.find_element_by_xpath("//*[@id='tinymce']/table/tbody/tr[2]/td[1]").send_keys("test")
  

Я получаю

     Traceback (most recent call last):
  File "C:UsersjlesslarDocumentsScriptspost robot automater.py", line 60, in <module>
    driver.find_element_by_xpath("//*[@id='tinymce']/table/tbody/tr[2]/td[1]").send_keys("test")
  File "C:Python27libsite-packagesseleniumwebdriverremotewebelement.py", line 479, in send_keys
    'value': keys_to_typing(value)})
  File "C:Python27libsite-packagesseleniumwebdriverremotewebelement.py", line 633, in _execute
    return self._parent.execute(command, params)
  File "C:Python27libsite-packagesseleniumwebdriverremotewebdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "C:Python27libsite-packagesseleniumwebdriverremoteerrorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
WebDriverException: Message: unknown error: cannot focus element
  (Session info: chrome=72.0.3626.81)
  (Driver info: chromedriver=2.45.615291 (ec3682e3c9061c10f26ea9e5cdcf3c53f3f74387),platform=Windows NT 10.0.17134 x86_64)
  

Насколько я могу судить, td — это то, куда я хочу отправить ключи, но в Интернете говорится, что у меня должно быть либо текстовое поле, либо входной тег, доступный мне для работы send_keys (чего у меня нет)

введите описание изображения здесь

Руководство было бы высоко оценено.Спасибо!

Ответ №1:

Вы должны иметь возможность изменять значение innerHTML с помощью JS с помощью execute_script()

Сначала получите свой элемент:

 el = driver.find_element_by_xpath("//*[@id='tinymce']/table/tbody/tr[2]/td[1]")
  

Затем попробуйте, установив непосредственно значение innerHTML:

 driver.execute_script('arguments[0].innerHTML = "test";', el)