我在以下情况中遇到问题。请帮帮我们。 情景 -
<MF>
文件夹。<COMMON>
。<DEC-2017>
文件夹。<Current date>
文件夹 <Current date>
文件夹每天都在动态生成。
我已编写代码但无法为动态文件夹编写xpath。前2017年11月12日
public class bseIndia
{
String driverPath = "C:\\Users\\Public\\Public Desktop";
public WebDriver driver;
@BeforeClass
public void setUp()
{
System.setProperty("webdriver.chrome.driver","F:\\Abhishek\\chromedriver.exe");
driver = new ChromeDriver();
driver.manage().window().maximize();
}
@Test
public void nav() throws InterruptedException
{
System.setProperty("webdriver.gecko.driver", "F:\\Abhishek\\Document\\geckodriver.exe");
System.setProperty("webdriver.chrome.driver", driverPath+"chromedriver.exe");
driver.navigate().to("https://member.bseindia.com");
driver.findElement(By.xpath("//a[@id='FileGridVB1_gvFiles_ctl06_lbFolderItem']")).click();
driver.findElement(By.xpath("//a[@id='FileGridVB1_gvFiles_ctl02_lbFolderItem']")).click();
driver.findElement(By.xpath("//a[@id='FileGridVB1_gvFiles_ctl02_lbFolderItem']")).click();
//driver.findElement(By.xpath("//a[@id='FileGridVB1_gvFiles_ctl06_lbFolderItem']")).click();
Date date=new Date();
SimpleDateFormat sm = new SimpleDateFormat("dd-mm-yyyy");
driver.findElements(By.xpath("//a[@id='FileGridVB1_gvFiles_ctl02_lbFolderItem']"));
boolean b= driver.findElements(By.xpath("//a[@id='FileGridVB1_gvFiles_ctl02_lbFolderItem']")).contains(sm.format(date));
if(b==true)
{
here I have write the xpath for dynamic folder.
}
}
}
答案 0 :(得分:1)
我会做一些不同的事情。我通常会尝试查看这样的事情,我会重复行动并尝试提出一个能够处理它的一般功能。在这种情况下,您将单击给定特定预期名称的文件夹。然后我会编写一个函数clickOnFolder(String folderName)
,以便我可以处理这种情况。然后,每次需要单击文件夹时,只需调用该函数。代码在
public static void clickOnFolder(String folderName)
{
driver.findElement(By.xpath("//a[contains(., '" + folderName + "')]")).click();
}
使用XPath,我们发现一个A
标签,其中包含文件夹名称的文本,无论是&#34; MF&#34;或&#34; COMMON&#34;或今天的约会。此常规功能可用于单击任何文件夹。
在您的问题中,您的一个问题是您需要在今天的日期之前找到该文件夹。您已经询问了包含日/月/年的最终文件夹名称,但您确实需要它来包含文件夹(DEC-2017)。
要处理这些日期,您只需要以所需的格式获取今天的日期,然后找到代表使用XPath的文件夹的A
标记。将今天的日期转换为正确格式的代码如下所示。
我已经测试了下面的代码,但它确实有效。
String url = "https://member.bseindia.com/";
driver.navigate().to(url);
// get date formats for folder names
LocalDateTime currentTime = LocalDateTime.now();
String todaysDate = currentTime.format(DateTimeFormatter.ofPattern("dd-MM-yyyy"));
String monthYear = currentTime.format(DateTimeFormatter.ofPattern("MMM-yyyy")).toUpperCase();
clickOnFolder("MF");
clickOnFolder("COMMON");
clickOnFolder(monthYear);
clickOnFolder(todaysDate);
以boolean b
开头的代码行由于多种原因无效。
您正在使用.findElements()
(复数)返回一个集合,因此您需要查看单个元素,例如.get(0)
,进行比较。
您正在将String
与WebElement
进行比较,但始终会失败。你想要的是driver.findElement(locator).getText().contains("some string");
。
您的日期格式使用mm
,日期时间格式表示分钟,而不是月份。你想要MM
。