如何处理硒中https://www.flipkart.com/的登录窗口

时间:2018-11-24 18:33:17

标签: selenium selenium-webdriver webdriver webdriverwait

打开https://www.flipkart.com/时,将打开一个用于登录的窗口。如何处理硒中的这个窗口?

System.setProperty("webdriver.gecko.driver", "F:\\Software_Sel\\GekoDriver\\geckodriver-v0.16.1-win64\\geckodriver.exe");
WebDriver wd = new FirefoxDriver();
wd.get("https://www.flipkart.com/")                     
WebElement e1= wd.findElement(By.className("_2AkmmA _29YdH8")); 
e1.click();

我也尝试过iframe。但是不能处理。请帮忙。

2 个答案:

答案 0 :(得分:0)

您正在使用_2AkmmA _29YdH8的类名称包含两个类。 ClassName定位符仅适用于单个类名。您应该使用css ._2AkmmA._29YdH8

WebElement e1= 

wd.findElement(By.cssSelector(“ ._ 2AkmmA._29YdH8”))

希望这对您有帮助

答案 1 :(得分:0)

登录窗口和其中的元素属于同一HTML DOM的一部分,因此您需要诱使 WebDriverWait 使元素可点击,并且可以使用以下解决方案:

  • 代码块:

    import org.openqa.selenium.By;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.firefox.FirefoxDriver;
    import org.openqa.selenium.support.ui.ExpectedConditions;
    import org.openqa.selenium.support.ui.WebDriverWait;
    
    public class Login_Window_Flipkart {
    
        public static void main(String[] args) {
    
            System.setProperty("webdriver.gecko.driver", "C:\\Utility\\BrowserDrivers\\\\geckodriver.exe");
            WebDriver wd = new FirefoxDriver();
            wd.get("https://www.flipkart.com/");                    
            new WebDriverWait(wd, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//span[contains(.,'Enter Email/Mobile number')]//preceding::input[1]"))).sendKeys("Abhijit@Datta.com");
            wd.findElement(By.xpath("//span[contains(.,'Enter Password')]//preceding::input[1]")).sendKeys("Abhijit@Datta.com");
        }
    }
    

浏览器快照:

flipkart_login_window