无法在Selenium Python驱动程序中保持对元素的关注
我试图通过python控制web来运行脚本并下载相应的csv文件 下面是网页的外观,通过仪表板菜单单击“搜索”其他按钮。单击搜索按钮后,它会显示一个搜索文本框,用户可以在其中输入代码并按enter键运行 现在我需要找到这个搜索框的元素。从铬合金中检查,如下所示: 所以我使用了下面的代码。在从文本文件复制代码并将其发送到搜索框之前,我还使用了一些操作来保持搜索框的焦点无法在Selenium Python驱动程序中保持对元素的关注,python,selenium,Python,Selenium,我试图通过python控制web来运行脚本并下载相应的csv文件 下面是网页的外观,通过仪表板菜单单击“搜索”其他按钮。单击搜索按钮后,它会显示一个搜索文本框,用户可以在其中输入代码并按enter键运行 现在我需要找到这个搜索框的元素。从铬合金中检查,如下所示: 所以我使用了下面的代码。在从文本文件复制代码并将其发送到搜索框之前,我还使用了一些操作来保持搜索框的焦点 def run_code(): """ Function to copy the code in Search and r
def run_code():
""" Function to copy the code in Search and run it
"""
search_button=driver.find_element_by_link_text("Search")
search_button.click()
time.sleep(2)
with open('data_download_code.txt', 'r') as f:
code_file= f.read()
content_box=driver.find_element_by_class_name("ace_content")
# Getting the focus on the element
actions=ActionChains(driver)
actions.move_to_element(content_box)
actions.click()
content_box.send_keys(code_file,Keys.ENTER)
#content_box.submit()
然而,它抛出了一个聚焦错误,而不是在元素上
我不确定是否从附加的html文件中获得了用于搜索的正确元素选择器,或者这只是一些焦点问题。我确实在那里使用了Actions类来获得焦点
我希望代码读取txt文件中的文本并将其发送到搜索框,然后按enter键运行它
WebDriverException: Message: unknown error: cannot focus element
(Session info: chrome=71.0.3578.98)
编辑:选择器的额外html详细信息
编辑2:
编辑3:
因此,我能够获得搜索元素,它能够从txt文件复制代码并输入搜索框,但我看到它无法正确复制整个代码,因此给出了一个错误。请参阅附件的完整代码和多少得到了复制
sourcetype=perf_log_bizx
(host=pc*bcf* OR host=pc*bsfapi* OR servername=pc*bcf* OR servername=pc*bsfapi*) OR
(host=sc*bcf* OR host=sc*bsfapi* OR servername=sc*bcf* OR servername=sc*bsfapi*) OR
(host=ac*bcf* OR host=ac*bsfapi* OR servername=ac*bcf* OR servername=ac*bsfapi*) OR
NOT "/perfLogServlet" NOT "REQ-\[*" earliest="12/18/2018:08:00:00" latest="12/18/2018:12:00:00"
| rex field=_raw "\[(?<client_ip>[\d\.]+)\]\s+\[(?<company_id>[^,]+),(?<company_name>[^,]+),(?<company_schema>[\w\.]+),(?<dbpool>[^,]+),(?<user_id>[^,]+),\S+\]\s+\S+\s+\S+\s+(?<render_time>\d+)\s(?<server_time>\d+)\s(?<end2end_time>\d+)\s+\S+\s\S+\s\[.*\]\s+\d+\-(?<call_id>\d+)\s+(?<module_id>(-|\w+))\s(?<page_name>(-|\w+))\s(?<page_qualifier>(-|\w+))"
| rex field=_raw "\[\[(?<MemoryAllocated>\d+)\w+\s+(?<CPUTimeTotal>\d+)\w+\s+(?<CPUTimeUser>\d+)\w+\s+(?<CPUTimeSystem>\d+)\w+\s+(?<FileRead>\d+)\w+\s+(?<FileWrite>\d+)\w+\s+(?<NetworkRead>\d+)\w+\s+(?<NetworkWrite>\d+)\w+\s+(?<NotClosedFiles>(\d+|-))\s+(?<NotClosedSockets>(\d+|-))\s+\]\]\s+(?<SQLInvokes>\d+)\s+(?<SQLTimeTotal>\d+)"
| eval company_id = ifnull(CMID, company_id)
| eval dbpool = ifnull(DPN, dbpool)
| eval company_schema =ifnull(SN, company_schema)
| eval user_id = ifnull(UID, user_id)
| eval module_id = ifnull(MID, module_id)
| eval page_name = ifnull(PID, page_name)
| eval page_qualifier = ifnull(PQ, page_qualifier)
| rex field=CAID "\d+\-(?<CAID>\d+)"
| eval call_id = ifnull(CAID, call_id)
| eval render_time = ifnull(RDT, render_time)
| eval server_time = ifnull(SVT, server_time)
| eval end2end_time = ifnull(EET, end2end_time)
| eval MemoryAllocated = ifnull(MEM, MemoryAllocated)
| eval CPUTimeTotal = ifnull(CPU, CPUTimeTotal)
| eval CPUTimeUser = ifnull(UCPU, CPUTimeUser)
| eval CPUTimeSystem = ifnull(SCPU, CPUTimeSystem)
| eval FileRead = ifnull(FRE, FileRead)
| eval FileWrite = ifnull(FWR, FileWrite)
| eval NetworkRead = ifnull(NRE, NetworkRead)
| eval NetworkWrite = ifnull(NWR, NetworkWrite)
| eval NotClosedFiles = ifnull(0, NotClosedFiles)
| eval NotClosedSockets = ifnull(0, NotClosedSockets)
| eval SQLInvokes = ifnull(SQLC, SQLInvokes)
| eval SQLTimeTotal = ifnull(SQLT, SQLTimeTotal)
| eval request_type = if(call_id=0,"Root", "Subaction")
| search call_id = 0 AND page_name!="NONE"
| eval full_page_name = module_id + "-" + page_name + "-" + page_qualifier + " [" + request_type + "]"
| eval has_open_sockets = if ( ifnull(NotClosedSockets,0) > 0, 1, 0)
| eval has_open_files = if ( ifnull(NotClosedFiles,0) > 0, 1, 0)
| eval time = strftime( _time, "%Y-%m-%d %H:%M:%S" )
| eval server = ifnull(servername, host)
| rex field=server "\w(?<dc>\d+)\w"
| eval dc_name = "DC" + tostring(dc)
| eval server_type = if (substr(server, 1, 2) = "pc", "PROD", if (substr(server, 1, 2) = "sc", "PREVIEW", if (substr(server, 1, 2) = "ac", "QA", "OTHER") ) )
| eval dc_company_user = dc + "|" + company_id + "|" + sha256( user_id )
| table
time,
dc_name,
server_type,
dbpool,
company_id,
full_page_name,
dc_company_user,
server_time,
end2end_time,
SQLInvokes,
SQLTimeTotal,
MemoryAllocated[![enter image description here][6]][6]
sourcetype=perf_log_bizx
(主机=pc*bcf*或主机=pc*bsfapi*或服务器名=pc*bcf*或服务器名=pc*bsfapi*)或
(主机=sc*bcf*或主机=sc*bsfapi*或服务器名=sc*bcf*或服务器名=sc*bsfapi*)或
(主机=ac*bcf*或主机=ac*bsfapi*或服务器名=ac*bcf*或服务器名=ac*bsfapi*)或
NOT”/perfLogServlet“NOT”REQ-\[*“earlish=“12/18/2018:08:00:00”latest=“12/18/2018:12:00:00”
|rex字段=\u raw“\[(?[\d\]+)\]\s++[(?[^,]+),(?[^,]+),(?[\w\]+),(?[^,]+),(?[^,]+),(?[^,]+),\s++\s++\s++\s++\s+++(?\d+)\s++\s++\s(?\d+)\s++\s++-\s++\s+\s(-)(?\124w-)\s(-)
|rex字段=\U raw“\[\[(?\d+)\w+\s+(?\d+)\w+\s+(?\d+)\w+\s+(?\d+)\w+\s+(?\d+)\w+\s+(?\d+)\w+\s+(?\d+)\w+\s+(?(\d+)\s+)\s+(?(\d+)\d+)\s+)\s+)\s+)\]\s+\s+(?\s+)\s+)\s+(?\d+)\d+)
|评估公司id=ifnull(CMID,公司id)
|eval dbpool=ifnull(DPN,dbpool)
|评估公司架构=ifnull(序号,公司架构)
|eval user\u id=ifnull(UID,user\u id)
|评估模块id=ifnull(MID,模块id)
|评估页面名称=ifnull(PID,页面名称)
|评估页码限定符=ifnull(PQ,页码限定符)
|rex字段=CAID“\d+\-(?\d+)
|eval call\u id=ifnull(CAID,call\u id)
|eval render_time=ifnull(RDT,render_time)
|评估服务器时间=ifnull(SVT,服务器时间)
|eval end2end_time=ifnull(EET,end2end_time)
|eval MemoryAllocated=ifnull(MEM,MemoryAllocated)
|eval CPUTimeTotal=ifnull(CPU,CPUTimeTotal)
|eval CPUTimeUser=ifnull(UCPU,CPUTimeUser)
|eval CPUTimeSystem=ifnull(SCPU,CPUTimeSystem)
|eval FileRead=ifnull(FRE,FileRead)
|eval FileWrite=ifnull(FWR,FileWrite)
|eval NetworkRead=ifnull(NRE,NetworkRead)
|eval NetworkWrite=ifnull(NWR,NetworkWrite)
|eval NotClosedFiles=ifnull(0,NotClosedFiles)
|eval NotClosedSockets=ifnull(0,NotClosedSockets)
|eval SQLInvokes=ifnull(SQLC,SQLInvokes)
|eval SQLTimeTotal=ifnull(SQLT,SQLTimeTotal)
|评估请求类型=if(调用id=0,“根”,“子操作”)
|搜索呼叫\u id=0,页面名称!=“无”
|评估完整页面名称=模块id+“-”+页面名称+“-”+页面限定符+“[“+请求类型+”]”
|eval有_open _sockets=if(ifnull(NotClosedSockets,0)>0,1,0)
|eval有_open _files=if(ifnull(NotClosedFiles,0)>0,1,0)
|评估时间=strftime(\u时间,%Y-%m-%d%H:%m:%S)
|eval server=ifnull(服务器名,主机)
|rex字段=服务器“\w(?\d+)\w”
|评估dc_name=“dc”+tostring(dc)
|评估服务器类型=如果(子服务器(服务器,1,2)=“pc”,“产品”,如果(子服务器(服务器,1,2)=“sc”,“预览”,如果(子服务器(服务器,1,2)=“ac”,“QA”,“其他”))
|eval dc_company_user=dc+“|”+公司id+“|”+sha256(用户id)
|桌子
时间
dc_名称,
服务器类型,
数据库池,
公司编号:,
完整的页面名称,
dc_公司_用户,
服务器时间,
结束时间,
SQLInvokes,
SQLTimeTotal,
MemoryAllocated[![在此处输入图像描述][6][6]
编辑4:
从txt文件读取的代码也在读取中。\n因此字符串中有\n,我猜当发送到Web驱动程序以在搜索框中运行时,可能会导致问题。是否可以读取上面编辑中的代码
'sourcetype=perf\u log\u bizx\n(主机=pc*bcf*或主机=pc*bsfapi*或服务器名=pc*bcf*或服务器名=pc*bsfapi*)或\n(主机=sc*bcf*或主机=sc*bsfapi*或服务器名=sc*bcf*或服务器名=sc*bsfapi*)或\n(主机=ac*bcf*或主机=ac*bsfapi*或服务器名=ac*bcf*或服务器名=ac*bsfapi*)或服务器名=ac*bsfapi*)或servlet“/perflog”NOT“NOT”REQ-\\\[\=2018年12/18/18/18/2018年12/18/18/2018年12/18/18/2018年12/18/18/2018年12/18/18/2018年12/18/18/2018年12/18/18/2018:08:00:00:00 00:00:00最新“12/18/18/18/18/18/2018:00:00”00\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\18/18/18/18/18/18/18/18/18/18/18/18/18/18/18/18/18/18/18/18/18/18/18/18/18/18/18/18/18/18/18/18/18/18/18/18/18/18/18/18/18/18/18/18/18/18/18/18/18/18/18/18/18/18/18/18/18/18/124; \\ w+)\\s(?(--124;\\ w+)\\s(?(--124;\\ w+)))\n|rex字段=\u原始“\\[\\[(?\\d+)\\w+\\s+(?\\d+)\\目前,英国政府只会在以下几几个国家的手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手\ n | eval user\u id=ifnull(UID,user\u id)\n\n | eval module\u id=ifnull(MID,module\u id)\n | eval page\u name=ifnull(PID,page\u name)\n | eval page\u qualifier=ifnull(PQ,page\u qualifier)\n\n | rex field=CAID“\\d+\-(?\\d+)”\n | eval call id=ifnull(CAID,call\n\n | eval render\u time=ifnull(RDT,render\n | server\eval-time=ifu-time,svu-time)\n |评估结束2结束时间=ifnu
content_box=driver.find_element_by_class_name("ace_content")
content_box = driver.find_element_by_css_selector("div.ace_content input")
content_box.send_keys(code_file, Keys.ENTER)
content_box = driver.find_element_by_class_name('ace_text-input')
content_box.send_keys(code_file, Keys.ENTER)
with open('data_download_code.txt', 'r') as f:
code_file= f.read()
code_file = f.read.splitlines()
code_file = ';'.join(code_file)
code_file = ' '.join(code_file) # a whitespace character
code_file = '\t'.join(code_file) # a tab
code_file = '\\n'.join(code_file) # a literal newline
code_file = 'whatever?'.join(code_file) # you name it
with open('data_download_code.txt', 'r') as f:
code_file= f.readlines()
code_file = ';'.join(code_file)