WebDriver不可见的DocumentFragment元素

时间:2019-02-28 12:42:30

标签: dom selenium-webdriver

我有要测试的页面

<div class="activity-container">
<!--fragment#54705578f9#head-->
<div fragment="54705578f9" class="activity-action">
    <span class="icon-arrow_drop_down"></span>
    <span class="actions-description">
        <b>Login</b>
    </span>
    <span>Date: 28/02/2019</span>
    <span>Time: 12:20</span></div>
<div class="activity-description" fragment="54705578f9" style="display: none;">
    <span></span>
    <span class="actions-no-info">No additional information</span>
</div>
<!--fragment#54705578f9#tail-->
<!--fragment#26552421c5#head--></div>

当我尝试使用网络驱动程序单击//*[@class="activity-action"][1]时,出现“元素不可见异常”。 下一步,检查为什么硒元素不可见:

document.getElementsByClassName('activity-action')[0].getBoundingClientRect()

响应: DOMRect {x: 359.3125, y: 343, width: 900, height: 59, top: 343, …}

元素可见,现在检查父级:

document.getElementsByClassName('activity-action')[0].parentNode.getBoundingClientRect()并获得DOMRect {x: 0, y: 0, width: 0, height: 0, top: 0, …}

父元素不可见,因此子元素也不可见。但是父元素有点奇怪:

document.getElementsByClassName('activity-action')[0].parentNode

返回:<div fragment="54705578f9"></div>,但我不知道该怎么做。我在Chrome检查器中看不到此元素。这是什么?

document.getElementsByClassName('activity-action')[0].parentNode.parentNode

返回<div class="activity-container">...</div>该元素必须在上一步中返回。

我可以通过使用JavascriptExecutor修改元素//*[@class="activity-action"][1]使其可见吗?

1 个答案:

答案 0 :(得分:0)

基于提供的异常:

  

已完成命令waitForElementVisible(15235毫秒),并且在等待元素<//div[@class="activity-container"]/div[1]>可见15,000毫秒时超时。 -预期为“可见”,但显示为:“不可见

您给Selenium的xpath错误。硒尝试单击 activity-container div的 child div,该div是具有style="display: none;

activity-description div

请先在Chrome开发工具中验证您的xpath,然后再将其传递到Selenium测试中