【发布时间】:2017-12-19 14:40:51
【问题描述】:
我目前正在尝试自动化我们的网络应用程序的一部分,主要是一种类似于 facebook 的@mentioning 形式。在前端,当用户在文本输入中键入 @ 时,API 会调用用户列表并将其显示在出现的框中。此元素当前位于 DOM 的末尾,并且在键入 @ 时触发 javascript 之前不可见。
我的 selenium 代码使用 send_keys 填充 @namehere 但用户窗口元素没有出现,即使我在通过 selenium 打开浏览器时手动执行此操作
我尝试使用来自 Action Chains 的 upkey 事件,注入 javascript 来触发事件,单击返回文本输入以确保其聚焦但没有任何效果。这发生在 chrome 和 firefox 中
到处搜索,有什么想法吗?
特征步骤:
And i create a post titled "@James"
实现:
@when('i create a post titled "([^"]*)"')
def step_impl(context, text):
page = ActivityStreamPage.NewPost(context)
page.post_input.click()
page.post_input.send_keys(text)
元素:
'post_input': (By.CLASS_NAME, "js-post-textarea")
网页元素:
<div class="js-post-textarea js-edit-content editor__editable"
contenteditable="true" autocomplete="off" autocorrect="off"
autocapitalize="off" placeholder="Write a post or @mention to notify
someone"><span class="atwho-query">@</span><br></div>
用户框:
<div class="atwho-view" id="at-view-64" style="display: none; top:
135px; left: 440px;">
<ul class="atwho-view-ul">
<li class="mention__item cur">
<p class="mention__notice">
<span>@Group</span>
"Notify everyone in this Group."
</p>
</li>
</ul>
</div>
【问题讨论】:
-
真正令人担忧的部分是
even if i do it manually while the browser is opened via selenium。这似乎意味着用于启动浏览器的选项可能与默认选项不同(在没有 Selenium 的情况下启动时)。我相信您应该专注于设置浏览器选项以使手动部分正常工作。然后 Selenium send_keys 应该可以工作。我不知道配置问题会是什么。
标签: javascript python-3.x selenium python-behave