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

即使元素id存在,也无法使用selenium webdriver定位元素

裴永年
2023-03-14

请参考截图。我正试图单击“取消”按钮,如我的截图所示。即使元素的ID存在,我也无法单击按钮。弹出窗口既不是一个新窗口,也不像是一个警告我。我试图搜索是否是窗口句柄的问题。但是当我搜索窗口句柄时,它只给我一个数字:

 Set<String> handles = driver.getWindowHandles();
 System.out.println(handles);

收到错误消息-

线程“main”org.openqa.selenium.nosuchelementexception:没有这样的元素:找不到元素:{“method”:“id”,“selector”:“ctl00_contentplaceholder1_g_64d6331f_e460_4a48_890f_b7d7257093d9_ctl00_rtbcomments”}(会话信息:chrome=65.0.3325.181)(驱动程序信息:chromedriver=2.34.522940(1a76f96f66e3ca7b8e57d503b4dd3bccfba87af1)_64)(警告:服务器未提供任何stacktrace信息)命令持续时间或超时:0毫秒

共有1个答案

古扬
2023-03-14

您试图获取的ID实际上并不存在。这是因为每次浏览器创建按钮时,id都会动态更改,无论是在您第一次访问按钮时,还是在其他操作(如JavaScript)时。

您可以使用属性和XPath来获取cancel按钮,因为它是静态的,不会在会话之间改变。

C#代码

FindElement(By.XPath("//input[contains(@value, 'Cancel')]"));
 类似资料:
  • 我有一个粘性导航栏,它有几个列表元素,每个元素都包含href元素。当我试图定位元素时,我得到了错误。以下是我的HTML代码: 我想通过Webdriver定位Academic,我遇到这样的错误无法定位元素。

  • 问题内容: 我正在尝试使用getElementById()获取元素,但是即使元素存在,它也会返回null。我究竟做错了什么? 问题答案: 您必须将其放在一个 事件中。脚本执行时尚未到达DOM 。

  • 我对selenium WebDriver非常陌生,我试图自动化一个页面,它有一个名为“删除日志文件”的按钮。使用FireBug我了解到,HTML被描述为 css选择器也使用firepath定义为“#DeletelogButton” 请帮助我解决这个问题。

  • 下面是selenium找不到元素的代码。 但不知何故,它失败了,对我不起作用。它总是给我以下例外情况:过时的元素引用:元素未附加到页面文档 添加了--GetElementStextList的代码 感谢任何帮助。谢谢

  • 我找不到网页上的元素。我的页面可能有0到20个这样的元素。我想定位元素并验证元素的文本。 这是我的元素: 我尝试了一堆在线建议的解决方案,包括下面的解决方案,但总是无法找到元素异常。

  • 我想在selenium中找到我的文本字段,但我不知道如何找到(我第一次使用sellenium)。 我试过: 或者通过xPath和cssSseltor String在dev工具中由chrome生成。 请帮助我,我将感谢解释。 这是html: