按标题属性获取页面元素 - Selenium和Java

时间:2015-07-07 13:00:26

标签: java html selenium

我正在尝试获取标题中带有“收集器”一词的图像,然后单击它。 这是图像的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是可以的,所以我认为这不是问题。

2 个答案:

答案 0 :(得分:2)

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

driver.switchTo().frame(frameLocator);

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

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

答案 1 :(得分:1)

请试试这个。它将解决您的问题。

WebElement frameSwitch = driver.findElement(By.xpath("Give iframe Xpath location")); 
driver.switchTo().frame(frameSwitch); //Switch control to iframe.

//Perform your steps (I.e Click on Image)
driver.findElement(By.xpath("//img[contains(@title,'Collector')]")).click();

driver.switchTo().defaultContent(); //Come out of iframe.