我的span标签看起来像是html标签上的按钮
<span class="middle">Next</span>
我尝试使用
xpath=driver.findElement(By.xpath(".//*[@id='modal-actions-panel']/div[2]/a/span/span/span")); // by considering fixed id as reference
使用绝对
xpath=driver.findElement(By.xpath("html/body/div[4]/div[2]/a/span/span/span")); // took this from firebug
并使用
driver.findElement(By.cssSelector("span[class='middle']"));
没有成功!!它抛出以下异常:
线程“main”中的异常org.openqa.selenium.NoSuchElementException:无法定位元素:{“method”:“xpath”,“selector”:“// span [contains(。,\”Next \“) ]“} 命令持续时间或超时:30.12秒 有关此错误的文档,请访问:http://seleniumhq.org/exceptions/no_such_element.html
对于我尝试过的所有方法,它都会在选择器细节发生变化时显示相同的异常。有人可以帮我找到解决方案,这样我就可以找到span标签中的Next按钮并单击它。
下一步按钮位于iFrame中:以下是涵盖所需跨度标记的html部分。
下一个我也尝试过:
driver.switchTo().frame("iframe-applicationname_ModalDialog_0");
WebElement el = driver.findElement(By.cssSelector("span.middle"));
但抛出以下错误:
引起:org.openqa.selenium.ElementNotVisibleException:元素当前不可见,因此可能无法与
进行交互
如果需要,我可以告诉我一些我错过的东西..
答案 0 :(得分:0)
试试这个......
driver.findElement(By.xpath("//span[contains(@class,'middle') and contains(text(), 'Next')]"))
答案 1 :(得分:0)
我认为这个元素在框架或iframe中,如果是,那么你需要在找到元素之前切换那个框架或iframe,如下所示: -
driver.switchTo().frame("iframe-applicationname_ModalDialog_0");
WebElement el = driver.findElement(By.cssSelector("span.middle"));
el.click();
//Now after all your stuff done inside frame need to switch to default content
driver.switchTo().defaultContent();
Edited1 : - 如果因为元素当前不可见而出现异常需要实现WebDriverWait
等待元素可见,如下所示: -
WebDriverWait wait = new WebDriverWait(driver, 10);
//Find frame or iframe and switch
wait.until(ExpectedConditions.frameToBeAvailableAndSwitchToIt("iframe-applicationname_ModalDialog_0"));
//Now find the element
WebElement el = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath(".//span[@class = 'middle' and contains(text(), 'Next')]")));
el.click();
//Once all your stuff done with this frame need to switch back to default
driver.switchTo().defaultContent();
Edited2 : - 如果遗憾的是,它无法显示,请尝试使用JavascriptExecutor
点击它,如下所示: -
WebDriverWait wait = new WebDriverWait(driver, 10);
//Find frame or iframe and switch
wait.until(ExpectedConditions.frameToBeAvailableAndSwitchToIt("iframe-applicationname_ModalDialog_0"));
//Now find the element
WebElement el = wait.until(ExpectedConditions.presenceOfElementLocated(By.xpath(".//span[@class = 'middle' and contains(text(), 'Next')]")));
//Now click using JavascriptExecutor
((JavascriptExecutor)driver).executeScript("arguments[0].click()" el);
//Once all your stuff done with this frame need to switch back to default
driver.switchTo().defaultContent();
答案 2 :(得分:-1)
试试这个
new WebDriverWait(driver, 30).until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//span[contains(@class,'middle') and contains(text(), 'Next')]"))).click();
答案 3 :(得分:-1)
我试过了,它对我有用:
WebElement actionBtn=driver2.findElement(
By.xpath("//span[contains(@class,'v-menubar-menuitem-caption')
and contains(text(), 'Actions')]")
);
actionBtn.click();