Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/476.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用SeleniumWebDriver和PjantomJS等待元素变为可见_Javascript_Selenium Webdriver_Phantomjs_Mocha.js - Fatal编程技术网

Javascript 使用SeleniumWebDriver和PjantomJS等待元素变为可见

Javascript 使用SeleniumWebDriver和PjantomJS等待元素变为可见,javascript,selenium-webdriver,phantomjs,mocha.js,Javascript,Selenium Webdriver,Phantomjs,Mocha.js,我正在使用SeleniumWebDriver、phantomJS和mocha编写自动测试脚本 我的脚本文件本质上是javascript文件 我想等到一个元素( 注: 我不熟悉selenium。我需要javascript过程来解决这个问题。我不懂JAVA、Python或C# 有人能帮帮我吗?它之所以不可见是有原因的,不是吗?自动化普通用户为使该元素可见所做的

我正在使用SeleniumWebDriver、phantomJS和mocha编写自动测试脚本

我的脚本文件本质上是javascript文件

我想等到一个元素(

  • 注: 我不熟悉selenium。我需要javascript过程来解决这个问题。我不懂JAVA、Python或C#


    有人能帮帮我吗?

    它之所以不可见是有原因的,不是吗?自动化普通用户为使该元素可见所做的任何操作。有时页面的某些部分是隐藏的,因为它有多个“视图”在单个页面上。用户通常可以通过单击某些内容或填写表单在这些视图之间导航。您必须自动执行与用户相同的交互操作。

    以下代码片段帮助显示元素

    minorMenuXPath = "//ul[contains(@id, 'side-menu')]/li["+iMajor+"]/ul/li["+iMinor+"]/a";
    //Following snippet is stated for making the driver wait till the element is visble.
    driver.wait(function() 
    {
       return driver.isElementPresent(By.xpath(minorMenuXPath));
    }, 20*1000);
    driver.findElement(By.xpath(minorMenuXPath)).then(function(elem)
    {
        elem.isDisplayed().then(function(stat){
            console.log(stat);
        });
    });
    

    没有代码,我们无法真正帮助您;尽管从我的角度来看,您应该首先
    expect(by.css('#element').isVisible()).toBe(true)
    (不确定
    isVisible
    上是否有这样的函数),然后通过.css('#element')创建
    。单击().发生在某处()
    ---如果您真的需要元素可见,我想您可以将它的类更改为
    显示:block
    一个,然后执行expectI。我添加了一小段代码。您需要我添加整个脚本吗?不,这太酷了;我对我的注释进行了编辑,不过我会重复:您可以通过.css(“#element”)创建
    ).setAttribute('class','class-with-block');
    然后使
    expect
    请添加HTML DOMcode@ArtjomB.你能详细说明一下吗?我必须让驱动程序元素可见。
    true
    true
    true
    true
    true
    true
    true
    false
    true
    false
    true
    false
    true
    false
    false
    true
    true
    true
    true
    true
    true
    true
    true
    true
    true
    
    <ul id="side-menu" class="nav">
        <li class="nav-header">
        <img class="logo" alt="Track Revenue" src="/images/3c4939d.png">
        <div class="logo-element"> TR </div>
        </li>
        <li class="">
        <a href="#home">
        <i class="fa fa-bolt"></i>
        <span class="nav-label">Tr Admin Menu</span>
        <span class="fa arrow"></span>
        </a>
        <ul class="nav nav-second-level collapse" aria-expanded="false" style="height: 0px;">
            <li>
            <a href="/admin/user/">All Users</a>
            </li>
            <li>
            <a href="/admin/company/">All Companies</a>
            </li>
            <li>
            <a href="/admin/device/">Devices</a>
            </li>
            <li>
            <a href="/admin/email/">Send Email</a>
            </li>
            <li>
            <a href="/admin/impersonate">Impersonate User</a>
            </li>
            <li>
            <a href="/admin/encrypttest">Test Encryption</a>
            </li>
        </ul>
        </li>
        <li class="">
        <a href="#home">
        <i class="fa fa-th-large"></i>
        <span class="nav-label">Campaigns</span>
        <span class="fa arrow"></span>
        </a>
        <ul class="nav nav-second-level collapse" aria-expanded="false" style="height: 0px;">
        <li>
        <a href="http://demotest.com.co/main/account/campaign_overview.php">Overview</a>
            </li>
            <li>
            <a href="http://demotest.com.co/main/account/campaign_update_cpc.php">CPC Update</a>
            </li>
            <li>
            <a href="http://demotest.com.co/main/account/campaign_update_subids.php">SubID Update</a>
            </li>
            <li>
            <a href="http://demotest.com.co/main/account/campaign_v2.php">Add Campaign</a>
            </li>
        </ul>
        </li>
        <li>
        <a href="#home">
        <i class="fa fa-bar-chart-o"></i>
        <span class="nav-label">Stats</span>
        <span class="fa arrow"></span>
        </a>
        <ul class="nav nav-second-level collapse">
            <li>
            <a href="http://demotest.com.co/main/account/stats_campaign_v2.php">Campaign Stats</a>
            </li>
            <li>
            <a href="http://demotest.com.co/main/account/stats_week_day_v2.php">Week / Day Parting Stats</a>
            </li>
        </ul>
        </li>
        <li>
        <a href="#home">
        <i class="fa fa-files-o"></i>
        <span class="nav-label">Reports</span>
        <span class="fa arrow"></span>
        </a>
        <ul class="nav nav-second-level collapse">
            <li>
            <a href="http://demotest.com.co/main/account/report_custom.php">Custom Data Reports</a>
            </li>
            <li>
            <a href="http://demotest.com.co/main/account/report_subid.php">SubID Analysis Report</a>
            </li>
            <li>
            <a href="http://demotest.com.co/main/account/completed_report.php">Scheduled Reports</a>
            </li>
        </ul>
        </li>
        <li>
        <a href="#home">
        <i class="fa fa-cog"></i>
        <span class="nav-label">Settings</span>
        <span class="fa arrow"></span>
        </a>
        <ul class="nav nav-second-level collapse">
            <li>
            <a href="/profile/">Account</a>
            </li>
            <li>
            <a href="/plan/">Plan Management</a>
            </li>
            <li>
            <a href="http://demotest.com.co/main/account/settings_groups.php">Campaign Groups</a>
            </li>
            <li>
            <a href="http://demotest.com.co/main/account/settings_network.php">Affiliate Networks</a>
            </li>
            <li>
            <a href="http://demotest.com.co/main/account/settings_sources.php">Traffic Source</a>
            </li>
            <li>
            <a href="/manage/user/">Manage Users</a>
            </li>
            <li>
            <a href="/manage/company/">Manage Company</a>
            </li>
            <li>
            <a href="http://demotest.com.co/main/account/settings_rules.php">Blocking & Filter Rules</a>
            </li>
            <li>
            <a href="http://demotest.com.co/main/account/domains.php">Domains</a>
            </li>
            <li>
            <a href="http://demotest.com.co/main/account/campaign_archive.php">Campaign Maintenance</a>
            </li>
        </ul>
        </li>
    </ul>
    
    minorMenuXPath = "//ul[contains(@id, 'side-menu')]/li["+iMajor+"]/ul/li["+iMinor+"]/a";
    //Following snippet is stated for making the driver wait till the element is visble.
    driver.wait(function() 
    {
       return driver.isElementPresent(By.xpath(minorMenuXPath));
    }, 20*1000);
    driver.findElement(By.xpath(minorMenuXPath)).then(function(elem)
    {
        elem.isDisplayed().then(function(stat){
            console.log(stat);
        });
    });