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