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

Java Selenium-ExpectedCopNditions状态通过,但可见性失败

暴乐邦
2023-03-14

我不明白..我已经寻找答案2天了,现在我找不到一个单一的解决方案围绕这个问题。

代码如下所示(在try catch块中):

Presence = new WebDriverWait(Driver, custTimeout);
Presence.until(ExpectedConditions.presenceOfElementLocated(By.xpath(ElementXpath)));

单独的try catch块:

Visisble = new WebDriverWait(Driver, custTimeout);
Visisble.until(ExpectedConditions.visibilityOfElementLocated(By.xpath(ElementXpath)));
foundElement.isDisplayed();
Clickable = new WebDriverWait(Driver, custTimeout);
Clickable.until(ExpectedConditions.elementToBeClickable(By.xpath(ElementXpath)));
ElementToClick.get(0).click();
ElementToClick.getAttribute("height");
ElementToClick.getAttribute("width");

编辑:

那么,如果这些标准方法不起作用,我该如何确定元素是否可见呢?

当前元素属性:

共有1个答案

柴兴贤
2023-03-14

PresenceOfElementLociated()是检查页面DOM上是否存在元素的期望值。这并不一定意味着该元素是可见的。

public static ExpectedCondition<WebElement> presenceOfElementLocated​(By locator)

Parameters:
locator - used to find the element
Returns:
the WebElement once it is located

VisibilityOfElementLociated()是用于检查某个元素是否存在于页面的DOM中并且是否可见的期望值。可见性意味着元素不仅显示,而且高度和宽度都大于0。

public static ExpectedCondition<WebElement> visibilityOfElementLocated​(By locator)

Parameters:
locator - used to find the element
Returns:
the WebElement once it is located and visible

issplaying()的此实现与WebDriver Level 2 W3C工作草案中的规范内联,其中提到:

推荐的方法将给出元素可见性的简化近似值,但请注意,它只依赖于树遍历,并且只覆盖可见性检查的子集。

一个元素的可见性是由人眼感知可见的东西来指导的。在此上下文中,元素的不一致性与可见性或显示样式属性无关。

推荐给实现者的确定元素可见性的方法最初是由Selenium项目开发的,它基于对树中元素的性质和关系的粗略近似。通常,如果元素的任何部分被绘制在画布上的视区边界内,则该元素将被视为可见的。

/session/{session id}/element/{element id}/displayed.
  • 将CSS可见性属性设置为隐藏性
  • 显示属性设置为

对于元素本身,或者对于它的祖先。

 类似资料:
  • 我只是按照这里的教程进行操作:https://cloud.google.com/kubernetes-engine/docs/how-to/managed-certs#creating_an_ingress_with_a_managed_certificate 在部署证书并等待20分钟后,证书显示为: 这一领域显然是可行的,那么我遗漏了什么呢? 编辑: 这是证书: 入口: 最后,负载平衡器: 对于

  • GridViewColumnExt是从GridViewColumn继承并添加可见性属性的类。 您可能会看到,我的ListView的ItemsSource被设置为寄存器ObservableCollection。Register类有一个名为vis的bool类型的属性。对于TextBox来说,这一切都很好,但是从GridViewColumnExt don来看,我认为我无法到达集合并绑定到特定的对象。 我

  • 我想添加一个监视器来检测不正常的服务,并在这种情况下发送警报。我已经公开了一个简单的REST API - ,它返回一个JSON,例如。 然后,我已将 添加到我的 site24x7 帐户,将内容检查响应格式设置为 JSON,现在我应该提供要断言的 JSONPath。 在JSONPath在线测试器中,当我使用时,我得到。但我想我应该尝试断言该返回值。 使用以下表达式不起作用 我想我应该使用或过滤来评估

  • 问题内容: 我对一种检查元素是否具有display:none样式显式性(即style =“ display:none”),具有(或继承)此样式的类,或其父项是否被隐藏的方式感兴趣(并且我的元素继承了这个) 情况1: 要么 情况2: 谢谢, 问题答案: 您正在寻找一种针对两种不同情况的解决方案。 第二种情况是检测某个元素的 父级 是否被隐藏。这需要遍历并且麻烦且缓慢。 / Sizzle使用),然后阅

  • 在react中,是否有人希望通过赋值而不是调用setState(…)来设置变量的状态的原因 例子: 在我看来,这似乎是一种反模式。但也许有一个很好的解释为什么有时候这是必要的?

  • 我在所有集成测试中不断收到异常,而单元测试运行良好。所有异常如下所示: 我正在使用Jupiter进行测试。我的观点的上述例外指向data.sql脚本,我必须填充一些数据。对我来说,语法似乎没问题,也运行良好,这意味着如果使用邮递员进行测试,会生成记录: 还考虑了Spring Boot可能存在的配置问题,所以我在gradle中添加了jdbc-starter依赖项。但它似乎仍然失败。 以下是测试的一部