我是这个社区的新手。我正在尝试从模式窗口执行登录选项的 xpath,但无法做到这一点。我尝试了 xpath 的所有组合,但没有得到结果。网站:https://yappily.com/提前谢谢。
下面是我的代码:
public class Web_Url
{
public static void main(String[] args)
{
System.setProperty("webdriver.chrome.driver","C:\Program Files\selenium drivers\chromedriver_win32\chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.get("https://yappily.com/");
driver.manage().window().maximize();
System.out.println(driver.getCurrentUrl());
driver.findElement(By.linkText("Login")).click();
driver.findElement(By.xpath(".//*[@id='sell-login']/div/div/div[1]/p/a")).click();
}
}
单击"登录"后,"登录模式"框需要一些时间才能加载。因此,您必须显式/隐式地处理等待。你可以在这里或这里阅读更多关于硒等待的信息。
我已经将WebDriverWait
与ExpectedConditions
一起使用来实现相同的目的
此代码将解决您的问题
WebDriver driver = new ChromeDriver();
driver.get("https://yappily.com/");
driver.manage().window().maximize();
System.out.println(driver.getCurrentUrl());
driver.findElement(By.linkText("Login")).click();
WebDriverWait wait = new WebDriverWait(driver, 10);
WebElement fbLogin = wait.until(ExpectedConditions.presenceOfElementLocated(
By.xpath(".//*[@id='sell-login']/div/div/div[1]/p/a")));
fbLogin.click();
你还必须在你的Xpath
上工作.将来,这些xpath不会有太大帮助。阅读有关相对 xpath 和 css 选择器的信息
单击登录按钮后添加隐式等待。driver.manage((.timeouts((.implicitwait(5,Timeunit.second(;这将解决。