css-selectors 相关问题

选择器是与文档树中的元素匹配的模式。在CSS规则中,它们用于为与模式匹配的元素定义样式。

org.openqa.selenium.NoSuchElementException:在定位要使用Selenium和Java提取文本的元素时无法定位元素错误

我想用硒写一些文本,但是我看到很多错误,而不是输出。但是,该代码之前曾奏效,我对此感到满意。我没有覆盖任何代码部分。我不知道是什么...

回答 3 投票 1

CSS条件选择器this或that

目前,我有这样的东西$(“#foo”)。click(function(){callMe();}); $(“#bar”)。click(function(){callMe();}); foo和bar做同样的事情。我可以定义一个选择器吗?

回答 2 投票 0

CSS / XPATH选择器查询

关于我们的CSS和Xpath选择器世界的一个小问题,我已经成功地使用XPATH获得了文本值,但是我无法使用CSS选择器成功,这是我的示例:...

回答 1 投票 0



如何使用 CSS 选择器获取除特定子元素之外的所有匹配元素?

假设一个HTML结构如图: 假设一个HTML结构如图所示: <div id="container"> <div class="A"> <div id="excludedElement"> <p> <span class="MyClass">1</span> <span class="MyClass">2</span> <span class="MyClass">3</span> </p> </div> </div> <div class="B"> <p> <span class="MyClass">4</span> <span class="MyClass">5</span> <span class="MyClass">6</span> </p> </div> </div> 我想要除“excludedElement”div 之外的“container”div 中具有“MyClass”类的所有元素。在这种情况下,结果仅包含跨度 4、5 和 6。 我目前的解决方案是先获取所有带有“MyClass”的元素,然后使用“MyClass”获取excludedElement内的所有元素。对于第一个列表中的每个元素,我们检查它是否在第二个列表中,如果是则跳过它。这是 O(n^2) 运行时间,所以我想避免这种情况。伪代码供参考: const allElements = container.querySelectorAll('.MyClass'); const excludedElements = container.querySelectorAll('#excludedElement .MyClass'); var result = []; for (const element in allElements) { if (!excludedElements.Contains(element)) { result.Add(element); } } 有没有办法在 querySelectorAll() 中制作一个 CSS 选择器来检索这组特定的元素? 一种方法是暂时从树中删除 excludedElement,查询“MyClass”,然后替换 excludedElement,但我想避免修改 DOM。 如果结构是可预测的并且是已知的: container.querySelectorAll('div:not(#excludedElement) > p .MyClass'); 如果结构 not 并且您可以添加类以避免 O(n^2): container.querySelectorAll('#excludedElement .MyClass') .forEach(element => element.classList.add('excluded')); const notExcludedMyClassElements = container.querySelectorAll('.MyClass:not(.excluded)'); 您可以选择所有 .MyClass 后代,然后 .filter 通过迭代当前项目是否具有 #excludedElement 祖先与 .closest: const classes = [...container.querySelectorAll('.MyClass')] .filter(span => !span.closest('#excludedElement')); for (const span of classes) { span.style.backgroundColor = 'yellow'; } <div id="container"> <div class="A"> <div id="excludedElement"> <p> <span class="MyClass">1</span> <span class="MyClass">2</span> <span class="MyClass">3</span> </p> </div> </div> <div class="B"> <p> <span class="MyClass">4</span> <span class="MyClass">5</span> <span class="MyClass">6</span> </p> </div> </div> 除非你事先知道 #container 的后代的确切结构类型,否则我认为没有一种优雅的方法可以用单个查询字符串来做到这一点; :not 只接受简单的选择器。 仅供参考,您不应该使用的一种愚蠢且重复的方法是使用查询字符串: :scope > .MyClass, :scope > *:not(#excludedElement) > .MyClass, :scope > *:not(#excludedElement) > *:not(#excludedElement) > .MyClass ... const selector = ` :scope > .MyClass, :scope > *:not(#excludedElement) > .MyClass, :scope > *:not(#excludedElement) > *:not(#excludedElement) > .MyClass `; const classes = container.querySelectorAll(selector); for (const span of classes) { span.style.backgroundColor = 'yellow'; }<div id="container"> <div class="A"> <div id="excludedElement"> <p> <span class="MyClass">1</span> <span class="MyClass">2</span> <span class="MyClass">3</span> </p> </div> </div> <div class="B"> <p> <span class="MyClass">4</span> <span class="MyClass">5</span> <span class="MyClass">6</span> </p> </div> </div> 我有这个.... const Excludes = [...container.querySelectorAll('#excludedElement .MyClass')] , noExcludes = [...container.querySelectorAll('.MyClass')].filter(el=>(!Excludes.includes(el))) ; noExcludes.forEach(element => element.style.backgroundColor = 'lightgreen');<div id="container"> <div class="A"> <div id="excludedElement"> <p> <span class="MyClass">1</span> <span class="MyClass">2</span> <span class="MyClass">3</span> </p> </div> </div> <div class="B"> <p> <span class="MyClass">4</span> <span class="MyClass">5</span> <span class="MyClass">6</span> </p> </div> </div> 您可以在.querySelectorAll()中使用这个精确的选择器: :not(#excludedElement) > p > .MyClass 工作示例: const includedSpans = [... document.querySelectorAll(':not(#excludedElement) > p > .MyClass')]; includedSpans.forEach((includedSpan) => console.log(includedSpan.textContent));<div id="container"> <div class="A"> <div id="excludedElement"> <p> <span class="MyClass">1</span> <span class="MyClass">2</span> <span class="MyClass">3</span> </p> </div> </div> <div class="B"> <p> <span class="MyClass">4</span> <span class="MyClass">5</span> <span class="MyClass">6</span> </p> </div> </div>

回答 4 投票 0


如何使用Selenium和Java单击确认按钮

我有一个确认按钮,我想单击它。我已经尝试了下面列出的所有三种方法。但这是行不通的。 driver.findElement(By.cssSelector(“ input.btn.btn.primary”))。submit(); ...

回答 1 投票 0


如何使用Selenium和Python定位元素并提取innerText

通过查看上面的屏幕截图,请帮助我从span标签中唯一地提取innerText测试用户。

回答 4 投票 1

如何只在div中获取文本,而不是关于TestCafe中的任何内部标签

我只需要文本缺口在Care,Took选择器中作为div。Patient-contact-popup li.nav-item a,结果就是缺口在Care1中。如何/将成为选择器,仅获取文本部分而不获取任何数字...

回答 1 投票 1

CSS从元素中删除所有通用样式

是否有任何简便的方法可以将元素中的样式删除(应用于“通用”选择器?一般而言,我的意思是section或p或div或button ...基本上不在目标位置...

回答 2 投票 1

如何使用Selenium VBA在用户名字段中发送文本

我正在尝试登录链接的网站。它看起来很简单,我已经在其他网站上成功做到了。我可以手动登录。我的代码是Dim bot As New WebDriver bot。启动“ ...

回答 1 投票 0

Css选择器在标签外获取文本

我有以下HTML: ]

回答 1 投票 -1

Puppeteer无法识别仅具有类型和类的选择器,但会接受完整的选择器

我正在尝试单击网页上的cookiewall,但是Puppeteer拒绝仅使用类型和类选择器(button.button-action)来识别短选择器。将其更改为完整的CSS ...

回答 1 投票 0

为什么我的文章在foreach循环中不起作用?

我不知道为什么我的文章在PHP中不起作用。在视频中,它可以工作,但是当我尝试自己动手做时,我无法使其工作。在视频中,它在每个循环中创建Html文章。它写为...

回答 1 投票 0

自动完成文本框首选选项

我想选择自动完成文本框中显示的第一个选项。以下是我尝试但未获得所需输出的代码。代码:public void clickSublink()引发IOException,...

回答 2 投票 1




© www.soinside.com 2019 - 2024. All rights reserved.