Java 如何在Selenium中找到该元素(按页面上的按钮)?
我试图按下网页上的“网格”类按钮,但遇到了问题。以下是HTML:Java 如何在Selenium中找到该元素(按页面上的按钮)?,java,html,selenium,selenium-webdriver,webdriver,Java,Html,Selenium,Selenium Webdriver,Webdriver,我试图按下网页上的“网格”类按钮,但遇到了问题。以下是HTML: <li id="prodlist" class="prodtab"> <span> Products</span> <div class="grid" onclick="goToView('productGrid');"></div> <div class="list" onclick="goToView('productLi
<li id="prodlist" class="prodtab">
<span> Products</span>
<div class="grid" onclick="goToView('productGrid');"></div>
<div class="list" onclick="goToView('productList')"></div>
</li>
这类问题的解决方案通常是切换到iframe(如果元素在其中):
WebElement frame = driver.findElement(by.cssSelector("iframe.ajaxStoreNumberAppendSrc"));
driver.switchTo().frame(frame);
// then, search for element
driver.findElement(By.xpath("//div[contains(@class, 'grid')]")).click();
或者,显式等待元素出现:
WebDriverWait wait = new WebDriverWait(webDriver, 5);
wait.until(ExpectedConditions.presenceOfElementLocated(By.xpath("//div[contains(@class, 'grid')]")));
有什么理由必须使用xpath吗?为什么不像
driver.findElement(By.cssSelector(“#prodlist.grid”)代码>我不必使用路径。我尝试了你的代码,但我得到了相同的错误:线程“main”org.openqa.selenium.NoSuchElementException中的异常:无法定位元素:{“方法”:“css选择器”,“选择器”:“#prodlist.grid”}你在该页面上有动态创建该元素的javascript吗?或者是静态html?是的,它在一个框架中。由于帧名称中的空格,切换到帧时遇到问题。这是html:我刚刚查看了他试图访问的页面,在本例中,他试图在iframe中访问它。他需要driver.switchTo().frame(“flyerFrame”)代码>是,它在一个框架中。由于帧名称中的空格,切换到帧时遇到问题。这是html:Parker,我不确定您在哪里看到的框架称为flyerFrame:S@ClaudeBastien我错了,我是从你上一个问题的网站上得到的,顺便说一句,它有相同的产品列表/网格布局。
WebDriverWait wait = new WebDriverWait(webDriver, 5);
wait.until(ExpectedConditions.presenceOfElementLocated(By.xpath("//div[contains(@class, 'grid')]")));