【问题标题】:How to click on an image/link using Selenium WebDriver (Java)如何使用 Selenium WebDriver (Java) 单击图像/链接
【发布时间】:2017-12-26 19:53:38
【问题描述】:

我在这个网站上,我正在尝试使用 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();   

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

编辑:我查看了可能的重复问题,但该网站上的解决方案均无效。

【问题讨论】:

标签: java image selenium button click


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    这是您问题的答案:

    元素Mass_based Search 位于iframe 中,id 为leftFrame。所以我们必须先切换到iframe。

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

    现在我们可以通过name定位器识别元素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();
        }
    }
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-10-04
      • 2020-10-04
      • 2013-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多