java - 通过 title 属性获取页面元素 - Selenium 和 Java

标签 java html selenium

我正在尝试获取标题中包含“Collector”一词的图像并单击它。 这是图像及其链接的 html 代码:

<a href="javascript:*command*" title="Level III: KPI Collector RYG of D D/Testing - SYS">
<img src="*unusable link because it's only valid for the specific page*" title="Level III: KPI Collector RYG of D D/Testing - SYS">

<a><img>标签嵌套在表格单元格和一些 div 中。我没有写 html 代码,所以如果它丑陋,请不要对我大喊大叫:p
这是我尝试执行此操作的 Java 代码:

WebElement trafficLight = driver.findElement(By.xpath("//img[contains(@title,'Collector')]"));
trafficLight.click();

我得到的错误是:

Exception in thread "main" org.openqa.selenium.NoSuchElementException: Unable to locate element: {"method":"xpath","selector":"//img[contains(@title,'Collector')]"}

我很确定 xpath 没问题,所以我认为这不是问题所在。

最佳答案

由于 img WebElement 位于一个框架内,因此在对该 WebElement 执行任何操作之前,您需要将焦点切换到该框架。您可以使用 WebDriver 的 switchTo() 来做到这一点像这样的方法:

driver.switchTo().frame(frameLocator);

框架定位器可以是其(从零开始)索引、名称或 id 属性,也可以是先前定位的 WebElement。

将焦点切换到所需的框架后,您应该能够使用与初始帖子中相同的代码与 WebElement 进行交互。

关于java - 通过 title 属性获取页面元素 - Selenium 和 Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31269227/

相关文章:

java - 为什么我无法从文件中的网站读取 Html 内容?

Java:如何将 SET<Integer> 保存为 HashMap 中的值?

html - 在 CSS 中设置父子深度

xml - XPath 中 "//"和 "/"之间的区别?

java - Linux 上的 Selenium NoSuchSession

java -/opt/chromeos/chromedriver :/lib64/libc. so.6: 在 linux 上使用 chromium 浏览器找不到版本 `GLIBC_2.15'(/opt/chromeos/chromedriver 需要)

java - 在 JBoss 6.1 上部署 CXF 资源适配器

java - 使用 SSLContext 创建 SocketChannel

javascript - react-waypoint onEnter/onLeave 没有给出值

javascript - 当窗口等于 div 时显示 div,但当窗口超过 div 时隐藏