繁体   English   中英

硒-如何单击此跨度类

[英]Selenium - How do click on this span class

我无法为此跨度类使用xpath。 我需要点击链接。

<span class="nav-selection">Ad Style</span>

我一直在尝试使用这种方法:

WebElement heightClass = driver.findElement(By.xpath("/html/body/div[3]/div/div[1]/div[2]/ul/li[3]/a/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>

谢谢您的帮助! 请告诉我。

这就是我在日食中写的东西。 请通过它,让我知道。 谢谢。

//class to run the test
public class AddNewCampaign extends TestLogin{

    WebDriver driver;

public static void main(String[] args) {

    AddNewCampaign addCamp = new AddNewCampaign();
    addCamp.LaunchParisUI();
    addCamp.loginCredentials();
    addCamp.addCampaign();


}

//method to add campagin

    public void addCampaign() { 

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

            WebElement linkCampaigns = driver.findElement(By.xpath("/html/body/div[3]/div/div[1]/div[2]/ul/li[3]/div/ul/li[3]/a"));

            WebDriverWait wait = new WebDriverWait(driver, 10);

            Actions builder = new Actions(driver);
            builder.moveToElement(heightclass).perform();
            wait.until(ExpectedConditions.visibilityOf(linkCampaigns));
            builder.moveToElement(linkCampaigns).click().perform();

        }

//class the launch the url

    public class LaunchParis{

        WebDriver driver;

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

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

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

使用class nav-selection找到span元素,然后转到该元素的父锚。 跨度很少可点击,锚点就是您想要单击的东西。

以下可能是另一个选择。 在单击之前,您要确保要加载元素。 这是基于文本的搜索。 并且,绕过具有相同类名或属性值的元素的好方法

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

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

因此,您在LaunchParis还不错,因为您已经创建了本地driver ,然后使用该driver通过driver.get()加载网页。 之后,您将返回main driver ,该driver仍具有未实例化的driver

我不确定您的代码的结构如何。 您可以通过从LaunchParis删除WebDriver driver定义来解决此问题,或者您可能需要将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);

我不能完全肯定,将如何在Java中工作,也就是说,如果分配localDriver = driver将设置AddNewCampaign的情况下driver为好。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM