是否可以将超链接文本复制到剪贴板并将其写回文本框中?



我正在使用chromedriver,selenium和pyautogui自动执行在网络上执行的任务。我能够在网页上打开一个弹出窗口(我相信它使用 javascipt(。然后,我可以删除文本框中的现有文本并向其中写入新文本,然后单击发送。(请原谅任何无知,因为我对编程很陌生。这实际上是我的第一个python脚本/程序的扩展/编辑,实际上可以工作,哈哈。

当我最初打开弹出窗口以编写消息时,文本框中存在一个模板。它包含一个重要且独特的超链接。我想提取它,然后删除文本框中的所有内容,并编写一条包含该特定链接的新消息。此任务将多次自动执行,并且链接根据消息将发送给谁而是唯一的。

我尝试通过 xpath 和其他一些事情查找超链接,但我不断收到各种错误。我要注意的一件事,请原谅我缺乏知识,但是xpath在这个网站上看起来非常不同。同样,我相信这是因为javascript。下面是超链接的示例 xpath:

//*[@id="clientEmailFormOneModal"]/div[3]/div[11]/div[2]/div/div[1]/div[2]/a

我已经在这个网站上使用了 xpath 做其他事情,但是当这些div 发挥作用时,事情变得很奇怪。

这是我目前针对此特定任务的函数:

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 (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:UsersmynameDesktopautomationWIPPayment Follow Upsvenvlibsite-packagesseleniumwebdriverremotewebelement.py", line 478, in send_keys
{'text': "".join(keys_to_typing(value)),
TypeError: sequence item 32: expected str instance, WebElement found

payLink = driver.find_elements_by_xpath('//*[@id="clientEmailFormOneModal"]/div[3]/div[11]/div[2]/div/div[1]/div[2]/a')

这个返回网络元素。你想用字符串连接:

message_box.send_keys('hey', contactName, 'here is the link to pay:', payLink)

这不起作用,因此expected str instance, WebElement found.

从 webelement 中提取值,如payLink[0].get_attribute("href").

相关内容

  • 没有找到相关文章

最新更新