【发布时间】:2016-03-31 02:56:26
【问题描述】:
使用 python 的 selenium,我得到了那些恼人的元素不可见异常,而元素是活动的、选择的和闪烁的。
问题在于制作 jfiddle 的页面上,因此这里不是制作 fiddle 本身,而是一种剪切和粘贴方式来登录并在您的 ipython 终端中拥有一个 webdriver(名为“driver”)(输入用户名和密码进入 ipython,而不是页面):
https://gist.github.com/codyc4321/787dd6f62e71cc71ae83
现在有一个驱动程序启动并且您已登录到 jsfiddle,我在这里所做的一切都失败了,除了第一次选择框(假设我想将 CSS 放入 CSS 框中):
https://gist.github.com/codyc4321/f4c03c0606c2e3e4ff5b
粘贴 activate_hidden_element 和第一个代码行,然后看到 CSS 面板亮起。出于某种原因,这个突出显示的面板是“不可见的”,您不能在其中粘贴和编码。该项目是
<div class="window top" id="panel_css" data-panel_type="css">
<textarea id="id_code_css" rows="10" cols="40" name="code_css"></textarea>
<a href="#" class="windowLabel" data-panel="css">
<span class="label">CSS</span><i class="bts bt-gear"></i>
</a>
</div>
所有其他项目(HTML、JS)基本相同。为什么这个活动框不允许粘贴文本?谢谢
解决方案:
我使这项服务工作的丑陋方式是手动伪造剪切和粘贴:
css_content = get_inline_content_and_remove_tags(webpage_content, 'style')
js_content = get_inline_content_and_remove_tags(webpage_content, 'script')
webpage_content = # ...clean cruft...
def copy_paste_to_hidden_element(content=None, html_id=None):
pyperclip.copy(content)
activate_hidden_element(html_id=html_id, driver=driver)
call_sp('xdotool key from+ctrl+v')
time.sleep(1)
copy_paste_to_hidden_element(content=webpage_content, html_id="panel_html")
copy_paste_to_hidden_element(content=js_content, html_id="panel_js")
copy_paste_to_hidden_element(content=css_content, html_id="panel_css")
它确实有效,唯一的小问题是它不能在后台运行,我需要让屏幕静置大约 30 秒
【问题讨论】:
-
最终目标是填充textarea,对吗?
-
是的,能够填充所有那些文本区域 html、css 和 javascript
标签: javascript python selenium selenium-webdriver