【问题标题】:Javascript box not being triggered in seleniumjavascript框未在selenium中触发
【发布时间】: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


【解决方案1】:

经过大量调试,似乎 AJAX 调用由于权限而被拒绝。应用程序而不是 selenium 的缺陷。

【讨论】:

    猜你喜欢
    • 2020-10-23
    • 2014-03-03
    • 2017-01-24
    • 1970-01-01
    • 1970-01-01
    • 2018-12-03
    • 1970-01-01
    • 2013-08-07
    • 1970-01-01
    相关资源
    最近更新 更多