[英]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&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.