Java Selenium-如何单击这个span类

Java Selenium-如何单击这个span类,java,html,testing,selenium-webdriver,automation,Java,Html,Testing,Selenium Webdriver,Automation,我无法为这个span类使用xpath。我需要点击链接 <span class="nav-selection">Ad Style</span> 我需要测试的部分的html代码 <ul class="nav nav-side-menu" style="top: 0px;"> <li class="shadow-layer"></li> <li> <a href="p

我无法为这个span类使用xpath。我需要点击链接

<span class="nav-selection">Ad Style</span>
我需要测试的部分的html代码

<ul class="nav nav-side-menu" style="top: 0px;">
        <li class="shadow-layer"></li>
        <li>
            <a href="portal.do?portalCategory=analyst">
                <i class="icon-photon dashboard"></i>
                <span class="nav-selection">Dashboard</span>
                                </a>
        </li>

        <li>
            <a href="javascript:;" class="sub-nav-container">
                <i class="icon-photon adcorner"></i>
                <span class="nav-selection">Ad Corner</span>
                <i class="icon-menu arrow"></i>                </a>
            <div class="sub-nav adCorner">
                <ul class="nav">

                    <li class="menu-add">
                        <a href="showstatusreports.do">Status Reports</a>
                    </li>


                    <li class="menu-add">
                        <a href="listinsertion.do">Insertion Order</a>                              
                    </li>
                    <li class="menu-add">
                        <a href="campaignWrapper.do?processpath=defaultPage&amp;camStatus=L">Campaigns</a>

                        <i class="icon-add" title="create new campaign" rel="createCampaign"></i>   

                    </li>






                    <li class="menu-add">
                        <a href="campaigncreatepage.do">Tags</a>                            
                    </li>







                        <li class="menu-add">
                        <a href="viewcreative.do">View Creative</a>
                        </li>


                </ul>
            </div>
        </li>

从您发布的非常有限的信息来看,您可能希望:

driver.findElement(By.xpath("//span[@class='nav-selection']/parent::a"));

找到具有类
导航选择的
span
元素,并转到该元素的父锚点。Span很少可点击,锚定是您想要点击的内容。

从您发布的非常有限的信息中,您可能想要:

driver.findElement(By.xpath("//span[@class='nav-selection']/parent::a"));

找到具有类
导航选择的
span
元素,并转到该元素的父锚点。Span很少可点击,锚定是您想要点击的内容。

从您发布的非常有限的信息中,您可能想要:

driver.findElement(By.xpath("//span[@class='nav-selection']/parent::a"));

找到具有类
导航选择的
span
元素,并转到该元素的父锚点。Span很少可点击,锚定是您想要点击的内容。

从您发布的非常有限的信息中,您可能想要:

driver.findElement(By.xpath("//span[@class='nav-selection']/parent::a"));

找到具有类
导航选择的
span
元素,并转到该元素的父锚点。Span很少可单击,锚定是您要单击的内容。

以下是另一个选项。在单击之前,您希望确保让图元加载。这是基于文本的搜索。另外,一种绕过具有相同类名或属性值的元素的好方法

WebElement heightClass = driver.findElement(By.xpath("//*[.='Ad Corner']/.."));

以下是另一个选项。在单击之前,您希望确保让图元加载。这是基于文本的搜索。另外,一种绕过具有相同类名或属性值的元素的好方法

WebElement heightClass = driver.findElement(By.xpath("//*[.='Ad Corner']/.."));

以下是另一个选项。在单击之前,您希望确保让图元加载。这是基于文本的搜索。另外,一种绕过具有相同类名或属性值的元素的好方法

WebElement heightClass = driver.findElement(By.xpath("//*[.='Ad Corner']/.."));

以下是另一个选项。在单击之前,您希望确保让图元加载。这是基于文本的搜索。另外,一种绕过具有相同类名或属性值的元素的好方法

WebElement heightClass = driver.findElement(By.xpath("//*[.='Ad Corner']/.."));

问题是您有两个
驱动程序的实例。您在
AddNewCampaign
中有一个实例。在
LaunchParis
中有另一个
driver
实例

因此,您在
启动巴黎
中没有问题,因为您已经创建了一个本地
驱动程序
,然后使用该驱动程序加载带有
驱动程序的网页。get()
。之后,返回到
,它仍然有一个未实例化的
驱动程序

我不确定你的代码是如何构造的。只需从
LaunchParis
中删除
WebDriver
定义,您就可以清除此问题,或者您可能需要将
driver
传递到
LaunchParis

所以,可能是这样的:

public class LaunchParis{

    WebDriver localDriver;

    //Launch PairsUI    
    public void LaunchParisUI(WebDriver driver) {
        localDriver = driver;
        localDriver = new FirefoxDriver();
        //localDriver = new ChromeDriver();
        localDriver.get("https://xfpqa1uiadm1");
        localDriver.manage().window().maximize();
    }
addCamp.LaunchParisUI(driver);
你会这样称呼它:

public class LaunchParis{

    WebDriver localDriver;

    //Launch PairsUI    
    public void LaunchParisUI(WebDriver driver) {
        localDriver = driver;
        localDriver = new FirefoxDriver();
        //localDriver = new ChromeDriver();
        localDriver.get("https://xfpqa1uiadm1");
        localDriver.manage().window().maximize();
    }
addCamp.LaunchParisUI(driver);

我不完全确定在Java中如何工作,也就是说,如果分配
localDriver=driver
将设置
AddNewCampaign
driver
实例。

问题是您有两个
driver
实例。您在
AddNewCampaign
中有一个实例。在
LaunchParis
中有另一个
driver
实例

因此,您在
启动巴黎
中没有问题,因为您已经创建了一个本地
驱动程序
,然后使用该驱动程序加载带有
驱动程序的网页。get()
。之后,返回到
,它仍然有一个未实例化的
驱动程序

我不确定你的代码是如何构造的。只需从
LaunchParis
中删除
WebDriver
定义,您就可以清除此问题,或者您可能需要将
driver
传递到
LaunchParis

所以,可能是这样的:

public class LaunchParis{

    WebDriver localDriver;

    //Launch PairsUI    
    public void LaunchParisUI(WebDriver driver) {
        localDriver = driver;
        localDriver = new FirefoxDriver();
        //localDriver = new ChromeDriver();
        localDriver.get("https://xfpqa1uiadm1");
        localDriver.manage().window().maximize();
    }
addCamp.LaunchParisUI(driver);
你会这样称呼它:

public class LaunchParis{

    WebDriver localDriver;

    //Launch PairsUI    
    public void LaunchParisUI(WebDriver driver) {
        localDriver = driver;
        localDriver = new FirefoxDriver();
        //localDriver = new ChromeDriver();
        localDriver.get("https://xfpqa1uiadm1");
        localDriver.manage().window().maximize();
    }
addCamp.LaunchParisUI(driver);

我不完全确定在Java中如何工作,也就是说,如果分配
localDriver=driver
将设置
AddNewCampaign
driver
实例。

问题是您有两个
driver
实例。您在
AddNewCampaign
中有一个实例。在
LaunchParis
中有另一个
driver
实例

因此,您在
启动巴黎
中没有问题,因为您已经创建了一个本地
驱动程序
,然后使用该驱动程序加载带有
驱动程序的网页。get()
。之后,返回到
,它仍然有一个未实例化的
驱动程序

我不确定你的代码是如何构造的。只需从
LaunchParis
中删除
WebDriver
定义,您就可以清除此问题,或者您可能需要将
driver
传递到
LaunchParis

所以,可能是这样的:

public class LaunchParis{

    WebDriver localDriver;

    //Launch PairsUI    
    public void LaunchParisUI(WebDriver driver) {
        localDriver = driver;
        localDriver = new FirefoxDriver();
        //localDriver = new ChromeDriver();
        localDriver.get("https://xfpqa1uiadm1");
        localDriver.manage().window().maximize();
    }
addCamp.LaunchParisUI(driver);
你会这样称呼它:

public class LaunchParis{

    WebDriver localDriver;

    //Launch PairsUI    
    public void LaunchParisUI(WebDriver driver) {
        localDriver = driver;
        localDriver = new FirefoxDriver();
        //localDriver = new ChromeDriver();
        localDriver.get("https://xfpqa1uiadm1");
        localDriver.manage().window().maximize();
    }
addCamp.LaunchParisUI(driver);

我不完全确定在Java中如何工作,也就是说,如果分配
localDriver=driver
将设置
AddNewCampaign
driver
实例。

问题是您有两个
driver
实例。您在
AddNewCampaign
中有一个实例。在
LaunchParis
中有另一个
driver
实例

因此,您在
启动巴黎
中没有问题,因为您已经创建了一个本地
驱动程序
,然后使用该驱动程序加载带有
驱动程序的网页。get()
。之后,返回到
,它仍然有一个未实例化的
驱动程序

我不确定你的代码是如何构造的。只需从
LaunchParis
中删除
WebDriver
定义,您就可以清除此问题,或者您可能需要将
driver
传递到
LaunchParis

所以,可能是这样的:

public class LaunchParis{

    WebDriver localDriver;

    //Launch PairsUI    
    public void LaunchParisUI(WebDriver driver) {
        localDriver = driver;
        localDriver = new FirefoxDriver();
        //localDriver = new ChromeDriver();
        localDriver.get("https://xfpqa1uiadm1");
        localDriver.manage().window().maximize();
    }
addCamp.LaunchParisUI(driver);
你会这样称呼它:

public class LaunchParis{

    WebDriver localDriver;

    //Launch PairsUI    
    public void LaunchParisUI(WebDriver driver) {
        localDriver = driver;
        localDriver = new FirefoxDriver();
        //localDriver = new ChromeDriver();
        localDriver.get("https://xfpqa1uiadm1");
        localDriver.manage().window().maximize();
    }
addCamp.LaunchParisUI(driver);