Я автоматизирую задачу, которая выполняется в Интернете с помощью chromedriver, selenium и pyautogui.Я могу открыть всплывающее окно на веб-странице (я думаю, что использует javascipt).Затем я могу удалить существующий текст в текстовом поле, написать новый текст и нажать «Отправить».(Прошу прощения за любое невежество, так как я очень плохо знаком с программированием в целом. На самом деле это расширение / редактирование моего самого первого скрипта / программы на python, что-то, что на самом деле работает, lol.)
Когда я первоначально открываювсплывающее окно, чтобы написать сообщение, шаблон существует в текстовом поле.Содержит важную и уникальную гиперссылку.Я хочу извлечь это, а затем удалить все содержимое в текстовом поле и написать новое сообщение, содержащее эту конкретную ссылку.Эта задача будет автоматизирована несколько раз, и ссылка будет уникальной в зависимости от того, кому отправляется сообщение.
Я пытался найти гиперссылку по xpath и пару других вещей, но продолжаю получать различные ошибки.Я хочу отметить одну вещь, и извините за недостаток знаний, но xpath сильно отличается от этого на этом сайте.Опять же, я считаю, что это из-за JavaScript.Вот пример xpath для гиперссылки:
//*[@id="clientEmailFormOneModal"]/div[3]/div[11]/div[2]/div/div[1]/div[2]/a
Я использовал xpath на этом сайте для других вещей, но когда эти дивы вступают в игру, все становится странным.
Вот мойтекущая функция для этой конкретной задачи:
def email_estimate():
driver.find_element_by_id('hlEmailInvoiceOrEstimate').click() #clicks button on page to reveal the 'send an email' pop up
time.sleep(1.9)
driver.find_element_by_class_name('trumbowyg-editor').click() #clicks into the textbox on the pop up
time.sleep(1)
payLink = driver.find_elements_by_xpath('//*[@id="clientEmailFormOneModal"]/div[3]/div[11]/div[2]/div/div[1]/div[2]/a') #my attempt at finding the hyperlink by xpath and saving it as a variable
time.sleep(.5)
driver.find_element_by_class_name('trumbowyg-editor').clear() #clear the content of the textbox
message_box = driver.find_element_by_class_name('trumbowyg-editor')
message_box.send_keys('hey', contactName, 'here is the link to pay:', payLink) #Write message including the contact name which was pulled in a step before this and works as expected, and the hyperlink, which does not work
time.sleep(30)
print("Followed up on estimate "+ str(j) + ". Contact: " + contactName) #clicks the send button to send the message
time.sleep(1.85)
Вы можете увидеть ожидаемые результаты, записанные в виде комментариев для шага в приведенном выше коде.На самом деле происходит Traceback и TypeError:
Traceback (most recent call last):
File "C:/Users/myname/Desktop/automation/WIP/Payment FollowUps/payments.py", line 77, in <module>
email_estimate()
File "C:/Users/myname/Desktop/automation/WIP/Payment Follow Ups/payments.py", line 33, in email_estimate
message_box.send_keys('hey', contactName, 'here is the link to pay:', payLink) #, contactName, payLink
File "C:\Users\myname\Desktop\automation\WIP\Payment Follow Ups\venv\lib\site-packages\selenium\webdriver\remote\webelement.py", line 478, in send_keys
{'text': "".join(keys_to_typing(value)),
TypeError: sequence item 32: expected str instance, WebElement found