Selenium获取Twingly的文本输入(Java代码)

Selenium获取Twingly的文本输入(Java代码),java,selenium,firefox,iframe,element,Java,Selenium,Firefox,Iframe,Element,请检查的元素 它有一个表单,以及2个文本输入和1个提交按钮。 我不知道当用户在那里键入一些URL时,实际使用的是这两个输入中的哪一个 但当我尝试使用firefoxDriver获取元素时: WebElement textfieldURL = driver.findElement(By.id("ping-url")); // even ping-box not working 结果无法定位元素 然后我将代码更改为: driver.switchTo().frame(driver.findElemen

请检查的元素

它有一个表单,以及2个文本输入和1个提交按钮。 我不知道当用户在那里键入一些URL时,实际使用的是这两个输入中的哪一个

但当我尝试使用firefoxDriver获取元素时:

WebElement textfieldURL = driver.findElement(By.id("ping-url")); // even ping-box not working
结果无法定位元素

然后我将代码更改为:

driver.switchTo().frame(driver.findElement(By.className("ping-iframe")));
WebElement textfieldURL = driver.findElement(By.id("ping-url")); // even ping-box not working
结果仍然无法定位元素。 有什么线索吗?

你没有提到你面临的例外情况。由于您的输入标记位于iframe下,所以您需要首先切换到frame,然后执行操作-

driver.switchTo().frame(driver.findElement(By.className("ping-iframe"))); 
//or you can use frame index as well
driver.switchTo().frame(0); 
您的元素在id ping框中可用。请尝试以下完整代码-

System.setProperty("webdriver.gecko.driver","D:/Application/geckodriver.exe");
driver = new FirefoxDriver();
driver.manage().window().maximize();
driver.get("https://www.twingly.com/ping");
driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
driver.switchTo().frame(driver.findElement(By.className("ping-iframe")));
driver.findElement(By.id("ping-box")).sendKeys("http://www.google.com");
driver.findElement(By.id("ping-button")).click();
我也一样