Java 如何使用Selenium在带有框架的网站上查找元素?
我试图在一个包含框架的网站上找到一个元素(包含“791”)(但是该元素位于顶部窗口)。由于某些原因,硒找不到元素。找到它的正确方法是什么? 谢谢Java 如何使用Selenium在带有框架的网站上查找元素?,java,selenium,automation,frame,Java,Selenium,Automation,Frame,我试图在一个包含框架的网站上找到一个元素(包含“791”)(但是该元素位于顶部窗口)。由于某些原因,硒找不到元素。找到它的正确方法是什么? 谢谢 公共类StarOnline{ 静态网络驱动程序; 静态字符串baseUrl; 公共静态void main(字符串[]args)引发InterruptedException{ baseUrl=”https://www.staronline.org.uk/demo_register.asp"; System.setProperty(“webdriver.c
公共类StarOnline{
静态网络驱动程序;
静态字符串baseUrl;
公共静态void main(字符串[]args)引发InterruptedException{
baseUrl=”https://www.staronline.org.uk/demo_register.asp";
System.setProperty(“webdriver.chrome.driver”,“C:\\Automation\\libs\\Drivers\\chromedriver.exe”);
驱动程序=新的ChromeDriver();
get(baseUrl);
列表复选框=driver.findElements(按.className(“.frm”);
System.out.println(“列表大小=“+checkbox.size());
for(WebElement:复选框)
{
if(ell.getText()包含(“791”))
单击();
else System.out.println(“未找到元素”);
打破
}
这不是这个问题的直接答案,只是一种方法。我们需要使用switchToFrame方法
如果你需要切换到你现在所在的框架的兄弟,我们可能需要从所有帧中出来,然后从根切换到那个兄弟帧。
从根目录切换到第1帧:driver.switchTo().frames("Frame 1");
切换到第1帧之外的第2帧:
//Come to root from Frame 1
driver.switchTo().defaultContent();
//Now switch to Frame 2
driver.switchTo().frames("Frame 2");
这也适用于嵌套框架/iFrame。希望这有帮助
谢谢。您试图定位的元素是下拉列表中的
选项
元素,id为mainstar
。下拉列表位于顶部窗口
上,因此您无需切换到任何框架来定位元素。因此,我们将通过选择文本为791
的选项selectByValue()
方法的Select
类。如果仔细观察,文本为791
的选项包含可见文本Alcohol Star
。因此,当我们选择该选项时,将从下拉列表中选择Alcohol Star
。以下是最小的代码:
package demo;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.support.ui.Select;
public class Q45770184_frame
{
static WebDriver driver;
static String baseUrl;
public static void main(String[] args)
{
baseUrl = "https://www.staronline.org.uk/demo_register.asp";
System.setProperty("webdriver.chrome.driver", "C:\\Utility\\BrowserDrivers\\chromedriver.exe");
driver = new ChromeDriver();
driver.get(baseUrl);
WebElement drop_down = driver.findElement(By.id("mainstar_"));
Select select = new Select(drop_down);
select.selectByValue("791");
}
}
您能否更新您提供的url中包含文本
791
的元素?
package demo;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.support.ui.Select;
public class Q45770184_frame
{
static WebDriver driver;
static String baseUrl;
public static void main(String[] args)
{
baseUrl = "https://www.staronline.org.uk/demo_register.asp";
System.setProperty("webdriver.chrome.driver", "C:\\Utility\\BrowserDrivers\\chromedriver.exe");
driver = new ChromeDriver();
driver.get(baseUrl);
WebElement drop_down = driver.findElement(By.id("mainstar_"));
Select select = new Select(drop_down);
select.selectByValue("791");
}
}