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

硒:chromedriver在聚合物网站上找不到元素

游鸣
2023-03-14


我有一个自动化项目使用Selenium,它将调用ChromeWebDriver并运行testcase

但Chromedriver不能在聚合物框架构建的网站上显示元素,
我们可以通过检查F12查看元素。但chromedriver找不到元素。

这里是网站的urlhttps://shop.polymer-project.org/我们不能使用ChomeDriver来查找元素内部节点“影子根”。此处代码:

System.setProperty("webdriver.chrome.driver", "chromedriver_win_2.23.exe");
WebDriver driver = new ChromeDriver();
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
driver.get("https://shop.polymer-project.org/");
Thread.sleep(5000);

System.out.println(driver.getTitle());
System.out.println(driver.getPageSource());
WebElement shopnowbtn = driver.findElement(By.xpath("//shop-button/a"));
shopnowbtn.click();

这里是错误

异常线程"main"org.openqa.selenium.NoSuchElement异常:没有这样的元素:无法定位元素:{"方法":"xpath","选择器":"//*[@类='样式范围商店-家']/a"}(会话信息: chrome=52.0.2743.116)(驱动程序信息: chromeDrier=2.23.409699 (49b0fa931cda1caad0ae15b7d1b68004acd05129),平台=Windows NT 6.1.7601 SP1x86_64)(警告:服务器未提供任何stackTrace信息)命令持续时间或超时:10.04秒

一些我的信息: Chrome版本52.0.2743.116m, Selenium-server-独立版2.53, ChromeDriver版本2.23
我用过FirefoxDriver工作正常。

那么,有没有运行自动化脚本的chromeDrivePolymer网站?
非常感谢

共有2个答案

司马彬
2023-03-14

无法找到元素,因为浏览器之间存在一些差异。

在这种情况下,您应该手动检查两个浏览器中的选择器。

如果您在chrome浏览器上进行检查,您将看到“style scope shop home”类丢失。

我建议使用基于href的选择器。下面是xpath和css选择器的一个变体。

//shop-button/a[contains(@href, 'list')]

或者

shop-button a[href*=list]

当您知道不同浏览器的页面可能不同时,请始终检查两个浏览器中的选择器。

洪琦
2023-03-14

因为我在这里是新手,所以不能使用注释,所以添加到@Lauda答案中,聚合物使用阴影DOM。但是火狐网页的最终页面来源和样式Chrome之间存在差异。有时,文档级别的CSS会覆盖阴影DOM元素的本地样式。在这两种浏览器中,甚至立即购物元素的外观也不同。

如前所述,您需要修改定位器以删除类值。也许添加id到你想要的元素。

 类似资料:
  • 任何提示都会很有帮助!

  • 大家好,我正试图在网站中找到一个元素,但出于某种原因,它不允许我。该网页是Reddit的登录形式,我尝试输入用户名和密码,但当我列出所有输入时,它只出现在顶部搜索栏中。我想这是因为它就像在另一个“标签”一样,它会弹出到前面,但我不知道如何管理它。提前谢谢。

  • 问题内容: 所以我想安装 https://www.npmjs.com/package/@progress/kendo-react- grid 该软件包存在于网站上,但是当我运行命令时 我收到404错误 想法? 到目前为止,我认为用户范围是什么 第二次尝试 问题答案: 我看着我的,这就是里面的东西 与该用于评论查看文档 我注释掉了所有4行,并且能够运行 无论出于何种原因,我都没有在https://w

  • 我试图在某一元素条件下隐藏几个聚合物元素。我知道有几种可能性。在我的opinon中,最简单的方法是引入一个新的CSS类 并将其添加到聚合物元素的类列表中 但这对元素没有影响。元素仍然可见。对elment检查器的查看显示,添加了该类: 其中parent-elem是父元素的名称。 谁能解释一下为什么元素不会被隐藏? 谢谢。 问候你,梅森曼

  • 我是新手,试图通过在flipkart网站上搜索来制作第一个自动化测试用例,然后搜索手机并单击特定的手机,然后添加到购物车,但它不起作用,得到这个错误硒.common.exceptions.ElementClickInterceptedException:消息:元素点击拦截:元素...在点 (728, 232) 处不可点击。并尝试通过查找css选择器/ xpath / id /名称,它们都没有工作,

  • 我正在自动化一个枯燥的数据输入任务,所以我创建了一个程序,基本上是使用Selenium为我点击和键入。它跑得很好!除非它到达这个特定的“编辑详细信息...”元素,但是,无论我尝试什么方法,selenium都无法找到该元素。 我尝试使用一个CSS选择器来访问ID,但没有成功。我还尝试使用XPATH,并尝试通过给它一个带有按钮文本的'contains'语句来更加具体。最后,我使用selenium ID