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

为什么有些元素存在但不可交互/显示?

井逸明
2023-03-14

我对测试非常陌生,试图更好地理解到底发生了什么。我发现我们的一些测试代码失败时,css选择器元素有一个waitUntilCanInteract或waitUntilDisplay附加到它,即使当我做一个铬检查元素显示在浏览器中。把它们改成等待直到存在让它们到达一个转折点,所以我想知道到底是什么造成了这种情况?

共有3个答案

庞意智
2023-03-14

简单的回答是,有时当设计者在网页上工作时,特别是在基础CSS框架或引导程序上工作时,他们故意隐藏原始CSS/HTML标签和元素,同时放置基础或基于引导的设计覆盖,如页面上的花键按钮,这会导致原始元素被隐藏。

最好的方法可能是:

I.您可以声明一个WebElement,同时调用一个元素来精确定位它,并使用moveToElement命令而不是简单地调用FindElement。by.xxxxx例如:

//*** Calling a WebElement and using moveToElement command***//

WebElement (anyElementname) = browser.findElement(By.partialLinkText("xxxxxxxxxxx"));
          action.moveToElement(anyElementname).perform();
//*** Waiting for 8 seconds***//          
Thread.sleep(8000, 80000);

二.您可以使用“等待”来提供页面加载时间和元素之间的交互

三、 避免复制覆盖的css元素集,尤其是xpath,而是从Div/button/li的原始源中复制xpath

让我知道它是否适合你。干杯

姚昊焱
2023-03-14

嗯,开发商决定这样做。

请参见,元素可以存在于DOM上,但不可见或不可交互。但不是相反。

如果您的测试在等待时通过,否则失败,如果您想让它们通过,您可能必须延长等待期。但这只是我的猜测,没有看到你的任何代码

干高歌
2023-03-14

精确地说,硒涉及元素的三种独特状态。

>

  • html中是否存在元素:元素的这种状态可以通过ExpectedConditionpresenceOfElementLocated()检测,其中的期望是检查元素是否存在于页面的DOM中。这并不一定意味着元素是可见的。

    >

  • Exmaple:

    WebElement element = new WebDriverWait(driver, 20).until(ExpectedConditions.presenceOfElementLocated(By.cssSelector("css_of_element")));
    

    html中元素的可见性:可以通过ExpectedConditionvisibilityOfElementLocated()检测元素的这种状态,其中的期望是检查元素是否存在于页面的DOM中并且可见。可见性意味着不仅显示图元,而且其高度和宽度都大于0。

    >

  • Exmaple:

    WebElement element = new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("css_of_element")));
    

    可单击的元素:可以通过ExpectedConditionelementToBeClickable()检测元素的这种状态,期望检查元素是否可见并启用,以便您可以单击它。

    >

  • Exmaple:

    WebElement element = new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("css_of_element")));
    

    您可以在Selenium中找到详细的讨论:检查元素的存在

  •  类似资料:
    • 我试图得到某个产品的评论,但它返回一个错误。 我的代码: 它返回:硒。常见的例外。ElementNotInteractitableException:消息:元素不可交互 你能告诉我该怎么办吗?

    • 我是新的Selenium C#NUnit。我跟着一行代码跑了 var wait=new WebDriverWait(驱动程序,TimeSpan.FromSeconds(30));等待直至(d)= 我得到了以下消息:消息:OpenQA. Selenium。元素不可交互(会话信息:chrome=89.0.4389.114)堆栈跟踪:远程WebDriver。Unpack AndThrowOnError(

    • 我有两个输入文本 通过打印元素标题,我确认了第一个和第二个输入元素都是可访问的。到目前为止,我尝试了setAttribute,executescript……但没有一个有效(或者我做了一些错误)(也许,它可能对谷歌chrome自动更新有作用?这是我现在唯一能想到的)

    • 我有一个Selenium脚本(Python),它单击一个回复按钮以显示类anonemail。类anonemail显示所需的时间各不相同。因此,在元素出现之前,我必须使用sleep。 我想等到类已经出现,而不是使用睡眠。我听说过等待命令,但我不知道如何使用它们。 这是我到目前为止所拥有的:

    • 硒的新手!我正在尝试使用selenium在Craigslist上列出待售房屋。 我在从下拉选择框中选择选项时遇到问题。 我收到以下错误: 元素不可操作异常:消息:元素不可交互:元素当前不可见,可能无法操作 使用“选择”也会产生同样的错误: 该元素存在: 但这并不是棘手的: 元素不可交互异常: 消息: 元素不可交互 我注意到选择元素是隐藏的,选择由选择框上的下一个元素控制。 我可以通过激活元素并使用

    • 我正在使用Selenium记录我在网页上的操作,但是,当我运行测试用例时,出现了一个点击操作抛出错误:元素当前不可见,因此可能无法与之交互。但是,我确信按钮是可见的,下面是它的html: 此外,这是我的Selenium IDE测试脚本: 有人知道为什么吗?提前感谢!