Я пытаюсь отправить send_keys в textarea, поэтому я использую actionchains для отправки ключей.
Я использовал этот код:
url='https://translate.google.com/?hl=vi'
browserdriver.get(url)
list_test=['product description 1','product description 2']
for i in range (0,2):
try:
body_text=list_test[i]
browserdriver.execute_script("window.scrollTo(0, document.body.scrollHeight)")
item = WebDriverWait(browserdriver, 10).until(EC.presence_of_element_located((By.TAG_NAME, "textarea")))
actions.move_to_element(item).send_keys(body_text).perform()
actions.reset_actions()
time.sleep(1)
except:
pass
print("done")
И результат текста был отправлен в Google Translate, как показано ниже:
product description 1product description 1product description 2
Вы видите, что это так странно, что так должно быть:
product description 1product description 2
Я также вставил print () в utils.py в исходный код actionchains, чтобы узнать, какой текст ввода отправляется в функцию send_keys:
def keys_to_typing(value):
"""Processes the values that will be typed in the element."""
typing = []
for val in value:
if isinstance(val, Keys):
typing.append(val)
elif isinstance(val, int):
val = str(val)
for i in range(len(val)):
typing.append(val[i])
else:
for i in range(len(val)):
typing.append(val[i])
print(typing)#this is a code line that I inserted
return typing
и консоль вывода keys_to_typing:
['p', 'r', 'o', 'd', 'u', 'c', 't', ' ', 'd', 'e', 's', 'c', 'r', 'i', 'p', 't', 'i', 'o', 'n', ' ', '1']
['p', 'r', 'o', 'd', 'u', 'c', 't', ' ', 'd', 'e', 's', 'c', 'r', 'i', 'p', 't', 'i', 'o', 'n', ' ', '1']
['p', 'r', 'o', 'd', 'u', 'c', 't', ' ', 'd', 'e', 's', 'c', 'r', 'i', 'p', 't', 'i', 'o', 'n', ' ', '2']
['p', 'r', 'o', 'd', 'u', 'c', 't', ' ', 'd', 'e', 's', 'c', 'r', 'i', 'p', 't', 'i', 'o', 'n', ' ', '2']
И это функция send_keys в исходном коде actionchains:
def send_keys(self, keys_to_send):
"""
Sends keys to current focused element.
:Args:
- keys_to_send: The keys to send. Modifier keys constants can be found in the
'Keys' class.
"""
typing = keys_to_typing(keys_to_send)
if self._driver.w3c:
for key in typing:
self.key_down(key)
self.key_up(key)
else:
self._actions.append(lambda: self._driver.execute(
Command.SEND_KEYS_TO_ACTIVE_ELEMENT, {'value': typing}))
return self
Пожалуйста, помогите мне объяснить эту странную ситуацию?
Я не знаю, почему в цикле, actionchains.send_keys отправлять дублированный контент?
спасибо!