如何解决使用硒粘贴到texbox中
该问题主要基于以下问题Paste command using Selenium的答案
我的目标是将剪贴板中的文本粘贴到特定网站中的特定文本字段中。
调用该函数时,我应该为“ self”和“ text”输入什么。该函数以这种方式定义
def paste_keys(self,xpath,text):
os.system("echo %s| clip" % text.strip())
el = self.driver.find_element_by_xpath(xpath)
el.send_keys(Keys.CONTROL,'v')
如果只是这样输入文本框的xpath
paste_keys('//*[@id="txt-url"]')
,我收到一条错误消息,指出“ xyz行中缺少两个位置参数”。xyz行是包含上述代码的行 (在这里我调用了仅提供xpath参数的函数。)
如果仅从函数中删除“ text and self”参数 即
def paste_keys(xpath):
os.system("echo %s| clip" % text.strip())
el = self.driver.find_element_by_xpath(xpath)
el.send_keys(Keys.CONTROL,'v')
,出现另一个错误,提示未定义“文本”。
作为修复此问题的最后尝试,我尝试在调用函数即i时传递空白参数
paste_keys(,'//*[@id="txt-url"]',)
我收到无效的语法错误,并且箭头指向第一个逗号
尽管我本来可以等待评论的答复,但我希望从更深的意义上理解这个错误和概念,因为我是一名学习Python的业余爱好者。
我的更新代码
from config import data
from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.common.keys import Keys
import time
#driver = webdriver.Chrome()
driver = webdriver.Chrome('./chromedriver')
def paste_keys(xpath):
#el = driver.find_element_by_xpath(xpath)
el = driver.find_element_by_css_selector(xpath)
el.send_keys(Keys.CONTROL,'v')
def order(k):
driver.get(k['downloader_url'])
driver.execute_cdp_cmd('Network.setUserAgentOverride',{"userAgent": 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML,like Gecko) Chrome/83.0.4103.53 Safari/537.36'})
paste_keys("input[id='txt-url']" )
time.sleep(10)
driver.find_element_by_css_selector("a[data-fquality='480']").click()
time.sleep(5)
#driver.find_element_by_link_text('Download .mp4').ActionChains.contextClick(productLink).sendKeys(Keys.ARROW_DOWN).sendKeys(Keys.ARROW_DOWN).sendKeys(Keys.RETURN).build().perform()
download_url_element = driver.find_element_by_xpath("//div[@id='process-result']/div/a")
download_url_element_value=download_url_element.get_attribute("href")
print(download_url_element_value)
if __name__ == '__main__':
order(data)
解决方法
如果您的方法在类内,则self
在其他类中没有意义。
self
用于引用类对象本身。
假设您有一个类,其中包含您的方法本身作为一个函数
class Hooks:
def paste_keys(self,xpath,text):
os.system("echo %s| clip" % text.strip())
el = self.driver.find_element_by_xpath(xpath)
el.send_keys(Keys.CONTROL,'v')
当您要使用该方法时,会像这样
Hooks hooksObject = Hooks()
hooksObject.paste_keys(xpath,text)
Python会将您的呼叫转换为-Hooks.paste_keys(hooksObject,test);
第二,如果您不将该方法用作类函数,则可以将其重写为
def paste_keys(xpath,text):
os.system("echo %s| clip" % text.strip())
el = driver.find_element_by_xpath(xpath) #keep in mind - here driver has to be global,if not - you can pass it as parameter
el.send_keys(Keys.CONTROL,'v')
并像使用它
paste_keys(xpath,text)
还有关于self的烦人帖子
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。