切换后无法在iframe中使用元素

时间:2018-11-05 12:00:36

标签: selenium xpath iframe css-selectors webdriverwait

我正在使用以下语句切换到iframe,但在最后等待时,我找不到Web元素。有没有人有什么建议?我已经通过Google搜寻了大约一天,尝试了不同的技术。到目前为止,没有一个有效

WebDriver driver = DriverFactory.getWebDriver()
WebDriverWait wait = new WebDriverWait(driver, 15)
driver.switchTo().defaultContent()
WebElement iframe = driver.findElement(By.cssSelector(".b-iframe__iframe"))
driver.switchTo().frame(iframe)
wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector(
 'fieldset.radio-switch-group')))

图片下方HTML的屏幕截图 HTML

1 个答案:

答案 0 :(得分:0)

根据您共享的 HTML ,您必须找到所需的 WebElement

  • 诱导 WebDriverWait 使所需的框架可用并切换到该框架。
  • 诱导 WebDriverWait 以使所需的元素可见,您可以使用以下任一解决方案:

    • 使用cssSelector

      new WebDriverWait(driver, 10).until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(By.cssSelector("iframe.b-iframe__iframe[src*='securetest']")));
      WebElement element = new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("fieldset.radio-switch-group#balance-type")));
      
    • 使用xpath

      new WebDriverWait(driver, 10).until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(By.xpath("//iframe[@class='b-iframe__iframe' and contains(@src,'securetest')]")));
      WebElement element = new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//fieldset[@class='radio-switch-group' and @id='balance-type']")));
      

在这里您可以找到有关Ways to deal with #document under iframe的相关讨论