我在这个网站上,我试图使用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();
但是,这似乎不起作用。 有什么想法吗?
编辑:我查看了可能存在的重复问题,但该网站上没有任何解决方案有效。
答案 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
位于iframe
,id
为leftFrame
。所以我们必须先切换到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();
}
}
如果这回答你的问题,请告诉我。