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

使DOM元素在没有id属性的情况下可见

国仰岳
2023-03-14

使用cssSelector,我能够找到一些具有id属性的元素。例如:

li[id='header-mypage-top']>a

使用Selenium 2(WebDriver)中的isDisplayed(),可以发现它是真的。

我的问题是单击下面的一些链接,我可以使用xpath找到这些链接,但使用isDisplayed()发现这些链接为false。

<li class="logout" data-action-url="www.xxx.co.jp/yyy">
    <a href="javascript:void(0)">ログアウト</a>
</li>

我尝试使用以下代码查找:

List<WebElement> elements =     driver.findElements(By.xpath("//li[@class='logout']/a"));
System.out.println("Logout item size: "+elements.size());

大小显示为1,但isDisplayed()返回false。

如何使此元素可见并能够单击它?

我使用的是PhantomJS 2.1.1。Firefox不会出现上述问题。

共有2个答案

澹台衡
2023-03-14

这是我找到的解决方案:

    wait.until(ExpectedConditions.presenceOfAllElementsLocatedBy(By.xpath("//li[@class='logout']/a")));
    wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//li[@class='logout']/a")));

使用上述两个等待集合解决了我的问题。

鄢飞鸾
2023-03-14

我猜元素(在本例中为“logout”)没有正确加载特定时间。所以您可以使用显式等待,如下所示:

WebDriverWait wait = new WebDriverWait(driver, 15);
        wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//li[@class='logout']/a")));
        boolean isLogoutDisplayed = driver.findElement(By.xpath("//li[@class='logout']/a")).isDisplayed();
        System.out.println("Is Logout displayed: " + isLogoutDisplayed);
 类似资料:
  • 我不确定以下问题是否适用于jaxb,但我还是会问。 在某个项目中,我们使用带有定义模式的jaxb来创建xml文件的下一个结构。 我们还使用jaxb的自动类生成来创建类:aaa和bbb,其中aaa生成为@XmlRootElement。 我们现在希望在新项目中使用相同的模式,该模式也将与以前的项目兼容。我想做的是使用相同的jaxb生成的类,而不需要对模式进行任何更改,以便仅将单个bbb对象封送到xml

  • 问题内容: 我可以在没有jQuery的情况下访问数据属性吗? 使用jQuery很容易,但是如果没有jQuery,我在任何地方都看不到该怎么做。 如果我在Google上搜索“没有jQuery”,那么我得到的只是jQuery示例。 可能吗 问题答案: 在这里,我找到了这个例子: 因此,它看起来非常可行。

  • 问题内容: 我需要使用(在AngularJS中)列出数组中的所有元素。 复杂的是,数组的每个元素都将转换为表的一,两或三行。 我不能创建有效的html(如果用于元素上),因为和之间不允许使用任何类型的重复元素。 例如,如果在上使用ng-repeat ,我将得到: 无效的html。 但是我需要生成的是: 其中第一行由第一个数组元素生成,接下来的三行由第二个数组生成,第五行和第六个由最后一个数组元素生

  • 我有一个从maven项目构建的jar文件。在它的pom,我有Spring靴和防波堤。我的项目的目的是在我的网站上实现web套接字。Jetty的web套接字实现不包含一个主方法,只包含一个类,这样它就知道当它收到web套接字请求时该怎么做。然后我尝试java-jar target/myproject-0.0.1-snapshot.jar,但我得到错误“no main manifest attribu

  • 问题内容: 我在整个应用程序中都使用spring 。现在,我也想为一个没有的创建一个。那有可能吗? 问题答案: JPA要求每个实体都有一个ID。因此,不可以,没有ID的实体是不允许的。 每个JPA实体都必须有一个主键。 从JPA规范 您可能想从这里阅读更多有关JPA如何处理数据库端没有ID的情况的信息(请参阅“无主键”)。

  • 所以,我想做的是: 创建水果的对象作为键和它们出现的次数。结束对象如下所示: 所以对于“苹果”来说: 我回顾了一堆帖子和链接,这些帖子和链接让我陷入了一个兔子洞。即便如此,他们中没有一个明确地解决了我所能说出的问题。 这段代码中Number对象保存属性并增加数字时发生了什么? 如何增加JavaScript对象中的值? 如何在JavaScript中使用for…语法获得循环计数器/索引? 遍历对象数组