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

时间:2018-05-08 15:34:59

标签: selenium selenium-webdriver selenium-chromedriver

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

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

请建议.. Screenshot of webpage

Screenshot of Webelement

收到错误讯息 -

  

线程“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),platform = Windows NT 6.1.7601 SP1 x86_64)(警告:服务器未提供任何堆栈跟踪信息)   命令持续时间或超时:0毫秒

2 个答案:

答案 0 :(得分:0)

我猜id值正在动态变化。 试试这个定位器

 By.CssSelector("input[value='Cancel']");

答案 1 :(得分:0)

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

您可以使用属性和XPath来获取取消按钮,因为它是静态的,并且不会在会话之间发生变化。

C#代码

FindElement(By.XPath("//input[contains(@value, 'Cancel')]"));