当前位置: 首页 > 知识库问答 >
问题:

元素不可见错误(无法单击元素)

邢项禹
2023-03-14

我想点击一个单选按钮,出现在网页上。代码如下所示:

HTML代码:

<div class="small-checkbox red-theme raleway-regular text-muted2 position-relative">

        <div class="city-checkbox inline-block position-relative" ng-class="{'rounded-checkbox': main.current_city_id == 1, 'mb-20': main.ifDeviceIsPhone}">
            <label class="mdl-radio mdl-js-radio mdl-js-ripple-effect mh-20" for="mumbaiCity" ng-class="{'is-checked' : main.current_city_id == 1}">
                <input type="radio" id="mumbaiCity" class="mdl-radio__button position-relative vertical-middle" name="city" value="1" ng-click="main.setCity('Mumbai', 1)">
                <span class="mdl-radio__label position-relative font15"><img class="city-icon" src="../../../assets/img/cities/mumbai-icon.png">Mumbai</span>
            </label>
        </div>
</div>

泰斯特案例:

// demo-test.js
describe('Protractor Demo App', function() {
    jasmine.DEFAULT_TIMEOUT_INTERVAL = 10000000;

    it('check item count', function() {
        browser.get('<link>');
        element(by.id('mumbaiCity')).click();
    });

});

此测试通过错误:

1)量角器演示应用程序检查项目计数

消息:

失败:元素不可见

我还尝试了:

element(by.css('[ng-click="main.setCity('Mumbai', 1)"]')).click();

它给出错误:

[16:16:26]E/启动器-参数列表后的错误:语法错误:缺失)

请建议,单选按钮将如何获得点击?

共有1个答案

訾稳
2023-03-14

这是硒测试自动化中相当常见的问题。

以下是常见的解决方案:

> < li >确保您想要单击的元素确实可见。有时,您需要在页面上执行额外的操作来使元素可见。例如,打开下拉菜单以显示选项,或者打开菜单以显示子菜单 < li>

等待元素的可见性:

var EC = protractor.ExpectedConditions;
var mumbaiCity = element(by.id('mumbaiCity'));
browser.wait(EC.visibilityOf(mumbaiCity), 5000);
mumbaiCity.click();

有另一个具有相同< code>id的元素实际上是不可见的。在这种情况下,您需要改进定位器来匹配这个特定元素。例如:

element(by.css(".city-checkbox #mumbaiCity")).click();
element(by.css(".city-checkbox input[ng-click*=Mumbai]")).click();

或者,如果您有多个元素匹配同一个定位器-您可以“过滤”掉一个可见元素:

var mumbaiCity = element.all(by.id('mumbaiCity')).filter(function (elm) {
    return elm.isDisplayed().then(function (isDisplayed) {
        return isDisplayed;
    });
}).first();
mumbaiCity.click();

移动到元素,然后通过browser.actions()单击:

var mumbaiCity = element(by.id('mumbaiCity'));
browser.actions().mouseMove(mumbaiCity).click().perform();

滚动到元素的视图中,然后单击:

var mumbaiCity = element(by.id('mumbaiCity'));
browser.executeScript("arguments[0].scrollIntoView();", mumbaiCity.getWebElement());
mumbaiCity.click();

通过javascript单击(但要注意区别):

var mumbaiCity = element(by.id('mumbaiCity'));
browser.executeScript("arguments[0].click();", mumbaiCity.getWebElement());

有时,您只需要最大化浏览器窗口:

browser.driver.manage().window().maximize();

 类似资料:
  • 问题内容: 我想单击一个单选按钮,出现在网页上。代码如下: HTML代码: Tesstcase: 此测试通过错误: 1)量角器演示应用检查项目数 信息: 失败:元素不可见 我也尝试过: 它给出了错误: [16:16:26] E / launcher-参数列表后出现错误:SyntaxError:缺少) 请提出建议,单选按钮将如何获得点击? 问题答案: 在使用硒进行测试自动化中,这是一个相当普遍的问题

  • 我正试图对这个网站进行测试。(https://www.phptravels.net/),我想测试一下它的登录特性。有一个“我的帐号”链接,需要先点击,显示登录和注册按钮的下拉。HTML代码如下所示: 当我尝试单击“我的帐户”按钮时,它抛出一个错误消息,说“元素不可见”。我很困惑,因为显然这个按钮一直可见。代码如下: 我的代码有什么问题?谢谢你。

  • 一个测试用例在chrome驱动程序中随机失败 我正在检查Wait.Until(ExpectedConditions.ElementToBeclickable(ele));我也试过线程。睡眠

  • 我无法从下拉列表中选择一个选项,该选项通过单击输入框可见。我在c#中使用Selenium。功能如下; 打开网页 点击目标输入框 这会导致显示目的地下拉列表 从此列表中选择一个选项 然后将选项写入目标输入框 此列表的超文本标记语言是; 我的测试代码是以下; 运行此测试会产生以下错误; OpenQA.硒元素不可见异常 : 元素不可见: 元素当前不可见,不能纵 我尝试在找到country list类之前

  • 环境Chrome:版本39.0.2171.95 Chrome Driver:2.13(最新)Selenium WebDriver