打开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。但是不能处理。请帮忙。
答案 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");
}
}
浏览器快照: