0

page url: https://netbanking.hdfcbank.com/netbanking/

enter image description here

I tried using switch to frames from selenium webdriver, still it doesn't help me

Below is the code sample

WebElement frame = DriverManager.getDriver().findElement(By.xpath("//frame[@name='login_page']"));
DriverManager.getDriver().switchTo().frame(frame);
DriverManager.getDriver().findElement(By.xpath("//div[@id='nortonimg2']/div/span/following-sibling::span/a")).click();
Prophet
  • 32,350
  • 22
  • 54
  • 79

3 Answers3

0

You just need to switch to the frame and then click the proper element inside it.
The following code should work:

WebElement frame = DriverManager.getDriver().findElement(By.xpath("//frame[@name='login_page']"));
DriverManager.getDriver().switchTo().frame(frame);
DriverManager.getDriver().findElement(By.xpath("//div[@id='welcomesec2']//a")).click();

The result is

enter image description here

Prophet
  • 32,350
  • 22
  • 54
  • 79
0

You were almost there but the locator strategy for the link Know More... was slightly off as there are multiple elements with almost similar attributes:

2elements


Solution

You can use either of the following locator strategies:

  • Using partialLinkText:

    WebElement frame = DriverManager.getDriver().findElement(By.cssSelector("frame[name='login_page']"));
    DriverManager.getDriver().switchTo().frame(frame);
    DriverManager.getDriver().findElement(By.partialLinkText("More...")).click();
    
  • Using cssSelector:

    WebElement frame = DriverManager.getDriver().findElement(By.cssSelector("frame[name='login_page']"));
    DriverManager.getDriver().switchTo().frame(frame);
    DriverManager.getDriver().findElement(By.xpath("div#welcomesec1 span.lightbluecolor > a")).click();
    
  • Using xpath:

    WebElement frame = DriverManager.getDriver().findElement(By.xpath("//frame[@name='login_page']"));
    DriverManager.getDriver().switchTo().frame(frame);
    DriverManager.getDriver().findElement(By.xpath("//div[@id='welcomesec1']//span[starts-with(., 'Your security is of utmost')]//following::span/a[starts-with(., 'Know') and contains(., 'More...')]")).click();
    
undetected Selenium
  • 183,867
  • 41
  • 278
  • 352
0

Although your XPath for 'Know More' link is correct, somehow web driver is not able to click on it. Try a different XPath for the same 'Know More' link, like below:

WebElement frame = DriverManager.getDriver().findElement(By.xpath("//frame[@name='login_page']"));
DriverManager.getDriver().switchTo().frame(frame);
DriverManager.getDriver().findElement(By.xpath("//*[@id=\"nortonimg1\"]/div[2]/span[2]/a")).click();
Shawn
  • 4,064
  • 2
  • 11
  • 23