我正在使用以下语句切换到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的屏幕截图
答案 0 :(得分:0)
根据您共享的 HTML ,您必须找到所需的 WebElement :
诱导 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的相关讨论