我对测试非常陌生,试图更好地理解到底发生了什么。我发现我们的一些测试代码失败时,css选择器元素有一个waitUntilCanInteract或waitUntilDisplay附加到它,即使当我做一个铬检查元素显示在浏览器中。把它们改成等待直到存在让它们到达一个转折点,所以我想知道到底是什么造成了这种情况?
简单的回答是,有时当设计者在网页上工作时,特别是在基础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
让我知道它是否适合你。干杯
嗯,开发商决定这样做。
请参见,元素可以存在于DOM上,但不可见或不可交互。但不是相反。
如果您的测试在等待时通过,否则失败,如果您想让它们通过,您可能必须延长等待期。但这只是我的猜测,没有看到你的任何代码。
精确地说,硒涉及元素的三种独特状态。
>
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测试脚本: 有人知道为什么吗?提前感谢!