如何使用Selenium在网站上找到一个元素?

时间:2017-08-19 10:01:12

标签: java selenium automation frame

我试图在包含框架的网站上找到一个元素(包含" 791")(该元素位于顶部窗口中)。由于某种原因,Selenium无法找到该元素。找到它的正确方法是什么? 谢谢!

Vue

2 个答案:

答案 0 :(得分:1)

这不是这个问题的直接答案,而只是一种方法。我们需要使用switchToFrame方法。

如果你需要切换到现在的帧的兄弟,我们应该从所有帧中走出来,然后从根切换到那个兄弟帧。例如,考虑下面的图像,

Selenium Handling Frames

从root切换到第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");

这也适用于嵌套的Frames / iFrames。希望这会有所帮助。

感谢。

答案 1 :(得分:0)

您要查找的元素是下拉列表中的option元素,idmainstar_。下拉列表位于Top Window上,因此您无需切换到任何框架以查找元素。因此,我们将选择文本为791selectByValue()类的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");
    }   
}