我试图用Python自动化一些SAP工作监控。我想创建一个脚本,应该做到以下几点:硒蟒蛇:在javascript运行后找不到元素
连接和登录SAP环境- >开放SM37交易- >发送作业参数(名用户 - 从 - 到)- >读输出并将其存储到数据库中。
我不知道任何模块或库允许我这样做。所以我查了一下WEBGUI已经启用了。我可以通过浏览器打开环境。浏览模块应该允许我做我需要的一切。 尝试机械和RoboBrowser。它的工作原理,但WEBGUI运行了很多JavaScript的renderize和这些模块不处理JavaScript。
还有一个镜头:硒。 我能够连接并登录到环境。但是当试图从新页面(主菜单)中选择一个元素时,Selenium无法找到元素。
打印源代码我意识到,主菜单网站使用JavaScript呈现。源代码根本不包含元素,只有标题(“欢迎”)。这意味着登录是成功的。
我读了很多帖子要求这个,每个人都推荐使用WebDriverWait
与一些明确的条件。
试过了,没有工作:
driver.get("http://mysapserver.domain:8000/sap/bc/gui/sap/its/webgui?sap-client=300&sap-language=ES")
wait = WebDriverWait(driver, 30)
element = wait.until(EC.presence_of_element_located((By.ID, 'ToolbarOkCode')))
编辑:
有两个源代码:SC-1是一个硒读取。 SC-2是在JavaScript呈现网站(来自“检查元素”的网站)时出现的那个。
全SC-1是这样的: https://pastebin.com/5xURA0Dc
为元件自身的SC-2是以下内容:
<input id="ToolbarOkCode" ct="I" lsdata="{0:'ToolbarOkCode',1:'Comando',4:200,13:'150px',23:true}" lsevents="{Change:[{ClientAction:'none'},{type:'TOOLBARINPUTFIELD'}],Enter:[{ClientAction:'submit',PrepareScript:'return\x20its.XControlSubmit\x28\x29\x3b',ResponseData:'delta',TransportMethod:'partial'},{Submit:'X',type:'TOOLBARINPUTFIELD'}]}" type="text" maxlength="200" tabindex="0" ti="0" title="Comando" class="urEdf2TxtRadius urEdf2TxtEnbl urEdfVAlign" value="" autocomplete="on" autocorrect="off" name="ToolbarOkCode" style="width:150px;">
仍然无法找到的元素。我该如何解决它? 在此先感谢。
检查元素是否在框架内 –
源代码根本不包含元素,也不在iframe中。只有标题(“欢迎”)。这意味着登录成功了。 –
使用firefox的firefox附加程序进行检查。检查特定元素的代码。 –