无法单击iframe内的按钮

无法单击iframe内的按钮,iframe,selenium-webdriver,Iframe,Selenium Webdriver,场景: 发布。 单击iframe内部的类似FB的按钮。(向下滚动查看) 问题: 我可以切换到iframe,但无法单击按钮,因为存在一个NoTouchElementException 我试着给出相对XPath和绝对XPath,但都不起作用。试试这种方法 driver.switchTo().frame( driver.findElements(By.tagName("iframe")).get(2)); new WebDriverWait(driver, 20).until(

场景:
发布。
单击iframe内部的类似FB的按钮。(向下滚动查看)

问题:
我可以切换到iframe,但无法单击按钮,因为存在一个NoTouchElementException

我试着给出相对XPath和绝对XPath,但都不起作用。

试试这种方法

driver.switchTo().frame(
        driver.findElements(By.tagName("iframe")).get(2));
new WebDriverWait(driver, 20).until(
    ExpectedConditions.elementToBeClickable(By
        .xpath("(//span[.='Like'])[1]"))).click();

我试过几次通过WebDriver执行,但没有出现类似facebook的按钮。所以我用下面的代码尝试Twitter,这对我很有用

WebDriver driver = new FirefoxDriver();
        driver.get("http://www.indiabookstore.net/");
        Thread.sleep(10000);
        driver.switchTo().frame(driver.findElement(By.xpath("//iframe[@class='home-twitter']")));
        driver.findElement(By.xpath("//span[@class='label']")).click();

观看上述视频,或者观看此视频以了解有关帧间切换的更多信息:

以下代码应适用于类似fb的按钮:

WebDriver driver = new FirefoxDriver();
driver.manage().window().maximize();
driver.get("https://www.indiabookstore.net/");

driver.switchTo().frame(driver.findElement(By.xpath("//html/body/div[1]/div[11]/div[1]/div[2]/div[1]/div/span/iframe")));
WebElement fb = driver.findElement(By.xpath("//html/body/div/div/div/table/tbody/tr/td[1]/div/form/div/div[1]"));//fb Like button

Actions builder = new Actions(driver);
builder.moveToElement(fb).click().build().perform();
driver.switchTo().defaultContent();

尝试放置一些wait-like-wait元素来显示。当我点击FB-like按钮时,它会在一个单独的窗口中显示我。如果是单独的窗口,则需要使用driver.switchTo().window()。有关切换窗口的详细说明,请观看此视频(如果它显示在单独的帧中),然后使用driver.switchTo.frame()。有关详细解释,请观看下面的视频:@Uday问题是单击类似facebook的按钮进行重新分级。OP无法单击按钮的原因可能是驱动程序无法切换到OP提供的iframe。@VivekSingh感谢您的回复。我确信我能够切换到框架(能够获取同一iframe下下一个td中的文本“43K”),但即使在使用WebDriverWait之后,我也无法单击该按钮。@Uday,也感谢您的帮助。.我同意您单击twitter按钮的逻辑,理想情况下,我的场景也应该是相同的,但它根本不起作用..我正在寻找一个解决方案,点击FB一样的按钮兄弟。。