gpt4 book ai didi

c# - 为什么 Selenium Firefox 驱动程序认为当父级溢出 :hidden? 时我的模态不显示

转载 作者:太空狗 更新时间:2023-10-29 21:58:16 25 4
gpt4 key购买 nike

编辑:我认为已经有一个 Unresolved 问题:http://code.google.com/p/selenium/issues/detail?id=5717

基本上我使用的是 Firefox 驱动程序,带有 id="page-content" 的 div 导致我的 selenium 测试失败,并出现引用问题中列出的错误:"Element is not currently visible and so may not be interacted with" but another is?我能够将问题追溯到该 ID 具有 overflow: hidden 的 css 样式这一事实。这是一个错误,还是我做错了什么?

我使用的是 Selenium WebDriver 版本:2.33.0.0,Firefox 版本:22

测试和网站的来源在这里:https://github.com/tonyeung/selenium-overflow-issue

供快速引用:下面的 HTML 是我的测试页。对于那些不熟悉 Angular 的人,它所做的只是在您单击添加或编辑时将 html 片段显示为模态,您可以在此处查看现场演示:http://plnkr.co/edit/LzHqxAz0f2GurbL9BGyu?p=preview

<!DOCTYPE html>
<html data-ng-app="myApp">
<head lang="en">
<meta charset="utf-8">
<title>Selenium Test</title>

<!-- // DO NOT REMOVE OR CHANGE ORDER OF THE FOLLOWING // -->
<!-- bootstrap default css (DO NOT REMOVE) -->
<link rel="stylesheet" href="css/bootstrap.min.css?v=1">
<link rel="stylesheet" href="css/bootstrap-responsive.min.css?v=1">
</head>
<body>
<div data-ng-controller="MyCtrl">
<span id="added" data-ng-show="added">Added</span>
<span id="edited" data-ng-show="edited">Edited</span>

<div id="page-content" style="overflow:hidden">
<!--<div id="page-content">-->
<div class="employees view">
<button name="addNewEmployee" id="addNewEmployee" class="btn btn-primary" data-ng-click="add()">Add</button>
<button name="editEmployee" id="editEmployee" class="btn btn-primary" data-ng-click="edit()">Edit</button>

<div data-ng-controller="editCtrl" data-ng-include="'app/views/edit.html'"></div>
<div data-ng-controller="addCtrl" data-ng-include="'app/views/add.html'"></div>
</div>
</div>

</div>

<!-- JS scripts -->
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/2.3.1/js/bootstrap.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/angular-strap/0.7.2/angular-strap.min.js"></script>
<script src="app/app.js"></script>

</body>
</html>

最佳答案

根据 Selenium WebDriver 源代码,元素不得将 overflow: hidden 作为样式。 ( ref ) (UPDATE 我刚刚意识到维护者更新了我链接到的 ref 中的代码,但是原始 2.33 代码确实包含 overflow: hidden检查。它刚刚针对推测的 2.34 进行了重构。)

所以,看起来除非维护者决定反对,否则你就是 SOL。但是让维护者注意到这个问题的第一步是向官方存储库添加一个问题,看起来你已经完成了。

同时,如果您无法让开发人员帮助您,一个可能的解决方案是使用 Javascript 删除溢出属性:


driver.executeScript("arguments[0].setAttribute('style', 'overflow: none;')", page_content_element)

并尝试从那里运行测试。

关于c# - 为什么 Selenium Firefox 驱动程序认为当父级溢出 :hidden? 时我的模态不显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17624312/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com