2017-06-12 49 views
0

我已经检查了之前讨论过的所有相关主题,应用eventhough但是我没有得到任何错误,无论是找不到任何元素,或者我在窗口句柄过程中遇到问题。我将按照以下的方式总结我的案例;如何选择弹出&发送密钥登录字段 - Selenium Webdriver Java

CaseFunctions.elementClicker(“/ html/body/header/div/div [2]/div/div/a [2]”); //元素点击并弹出打开。

当我点击那个按钮a后,登录Popup来。我试图在窗口之间切换,我有问题发送密钥, 首先:我发送密钥到电子邮件字段,它发送主页面(不弹出)注册字段,因为我们在主页上也有另一个具有相同ID的电子邮件字段。

这表明我无法在窗口之间切换,因为密钥被发送到错误的字段。 (不是弹出窗口中的一个,而是主页中的一个)。

不管怎么样,我无法捕捉到弹出窗口,并将按键发送到字段。

注意:弹出式标头具有不同的ID,弹出式窗口本身具有不同的ID和“电子邮件”字段,主页面&弹出式窗口中的一个具有相同的ID。

+0

你能给我的网站的详细信息? –

+0

你想要什么样的细节? – HellYeah2511

+0

你能为我提供网址吗? –

回答

0

这里的问题是识别弹出窗口中元素的正确xpath,因为主屏幕中的元素也有相同的xpath。我检查了下面的代码,它工作正常。

public static void main(String[] args) 
    { 
    System.setProperty("webdriver.chrome.driver", "F:\\Softwares\\Selenium\\Webdriver\\chromedriver.exe"); 
    WebDriver driver = new ChromeDriver(); 
    driver.manage().window().maximize(); 
    driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS); 

    driver.get("https://supercareer.com/"); 

    //Click on Login Button 
    driver.findElement(By.xpath("//a[contains(text(),'Log In')]")).click(); 
    //Enter email id 
    driver.findElement(By.xpath("//div[@id='dialog_loginemployee']//div[4]/input")).sendKeys("Hello"); 
    //Enter password 
    driver.findElement(By.xpath("//div[@id='dialog_loginemployee']//div[5]/input")).sendKeys("done"); 
    } 

希望这可以帮助你。谢谢

+0

非常感谢。有效。我其实也有一个相关的问题和另一个关于该页面的问题。 – HellYeah2511

+0

1)你是如何标识Xpath的电子邮件和密码字段? (对不起,我是一个新手,我无法通过萤火虫选择任何xpaths弹出电子邮件和密码字段。) – HellYeah2511

+0

2)我无法点击页面底部的通过LinkedIn连接按钮。获取元素不是可点击警告。 – HellYeah2511

0

当你说弹出你的意思是弹出窗口是实际的浏览器窗口弹出?

这里是我用来切换到使用窗口标题浏览器窗口中的代码:

public static void switchToWindow(String expectedTitle) throws Exception { 
    Set<String> handles = driver.getWindowHandles(); 
    System.out.println("Number of windows found: " + handles.size()); 
    for (String handle : handles) { 
     System.out.println("Working on window with handle: " + handle); 
     driver.switchTo().window(handle); 
     System.out.println("Switched to window with handle: " + handle); 
     String currentWindowTitle = driver.getTitle().trim(); 
     System.out.println("Current window page title: " + currentWindowTitle); 
     if(currentWindowTitle.toLowerCase().contains(expectedTitle.toLowerCase())){ 
      System.out.println("Window found (" + expectedTitle + ")"); 
      break; 
     } 
     else{ 
      System.out.println("-- This is not the window with title we are looking for"); 
     } 
    } 
} 

尽量确保您发送值字段前切换到一个弹出窗口。希望这可以帮助。

顺便提一下,在提问时提供代码将非常有用。

+0

CLick LogIn按钮后,我用你的窗口句柄函数来识别窗口。这是输出,发现 窗口的数量:1 工作窗口句柄:{} 82414cb2-38d5-4b74-8226-250c034d4d95切换 到窗口句柄:{} 82414cb2-38d5-4b74-8226-250c034d4d95目前 窗口页标题:“SOMETITLE” - - 这不是我们正在寻找的标题的窗口 – HellYeah2511

+0

相同的句柄。基本上只有一个窗口。 – HellYeah2511

+0

我的popUps是内部弹出窗口而不是浏览器弹出窗口,但我用你的函数来处理LinkedIn登录弹出窗口,它对我很有用。感谢您的协助。 – HellYeah2511

相关问题