繁体   English   中英

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

[英]How to click on an image/link using Selenium WebDriver (Java)

我在此网站上,并且尝试使用selenium webDriver(在Java中)单击基于Mass_based的搜索: 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();   

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

编辑:我已经看过可能重复的问题,但该网站上没有解决方案。

看来您的元素在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();

这是您的问题的答案:

元素Mass_based Search位于idleftFrameiframe 因此,我们必须先切换到iframe

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

现在,我们可以通过name定位器识别基于MASS_based search元素, MASS_based search如下所示调用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();
    }
}

让我知道这是否回答了您的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM