Не удается отправить_диски на td в селеновом питоне (нет входного тега) - PullRequest
0 голосов
/ 08 марта 2019

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

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:\Users\jlesslar\Documents\Scripts\post 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:\Python27\lib\site-packages\selenium\webdriver\remote\webelement.py", line 479, in send_keys
    'value': keys_to_typing(value)})
  File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webelement.py", line 633, in _execute
    return self._parent.execute(command, params)
  File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "C:\Python27\lib\site-packages\selenium\webdriver\remote\errorhandler.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, но онлайн он говорит, что для работы send_keys у меня должно быть либо текстовое поле, либо тег ввода (чего у меня нет)

enter image description here

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

1 Ответ

1 голос
/ 09 марта 2019

Вы должны иметь возможность изменить значение 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...