如何使用Selenium WebDriver(Java)单击图像/链接

时间:2017-07-20 22:28:41

标签: java image selenium button click

我在这个网站上,我试图使用selenium webDriver(在Java中)点击Mass_based Search: http://mmcd.nmrfam.wisc.edu/

图片/按钮的HTML代码是:

<img name="navbut4" src="http://mmcd.nmrfam.wisc.edu/cq-4.gif" onmouseover="glow('navbut4', 'tool4on')" onmouseout="glow('navbut4', 'tool4off')" border="0" alt="MASS_based search" onclick="cqmass()">

我尝试的解决方案是:

driver.findElement(By.xpath("//img[@src='http://mmcd.nmrfam.wisc.edu/cq-4.gif']")).click();   

但是,这似乎不起作用。 有什么想法吗?

编辑:我查看了可能存在的重复问题,但该网站上没有任何解决方案有效。

2 个答案:

答案 0 :(得分:0)

看来你的元素在iframe中然后点击第一次切换到iframe

喜欢

 driver.switchTo().frame(driver.findElement(By.xpath("//frame[@name='leftFrame']")));

然后执行点击

driver.findElement(By.cssSelector("td > img[name='navbut4']")).click();  

你必须从那个iframe回来继续进行除iframe之外的其他操作

driver.switchTo().defaultContent();

完整的代码就像

System.setProperty("webdriver.chrome.driver", "D:\\Application\\chromedriver.exe");
driver = new ChromeDriver(); 
driver.manage().window().maximize();
driver.get("http://mmcd.nmrfam.wisc.edu/");
driver.manage().timeouts().implicitlyWait(30,TimeUnit.SECONDS);
driver.switchTo().frame("leftFrame");
driver.findElement(By.cssSelector("td > img[name='navbut4']")).click();

答案 1 :(得分:0)

以下是您的问题的答案:

元素Mass_based Search位于iframeidleftFrame。所以我们必须先切换到iframe

driver.switchTo().frame("leftFrame"); 

现在,我们可以通过MASS_based search定位器识别元素name并按如下方式调用click()

driver.findElement(By.name("navbut4")).click();

完成iframe上的工作后,您将返回到您必须使用的页面的Top Window

driver.SwitchTo().DefaultContent();

这是工作代码块:

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;

public class Q45226198_frame_element 
{
    public static void main(String[] args) 
    {
        System.setProperty("webdriver.gecko.driver", "C:\\Utility\\BrowserDrivers\\geckodriver.exe");
        WebDriver driver =  new FirefoxDriver();
        driver.manage().window().maximize();
        driver.get("http://mmcd.nmrfam.wisc.edu/");
        driver.switchTo().frame("leftFrame"); 
        driver.findElement(By.name("navbut4")).click();
    }
}

如果这回答你的问题,请告诉我。