我是这个社区的新手。 我试图从模态窗口执行登录选项的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();
}
}
答案 0 :(得分:2)
单击“登录”后,“登录模式”框需要一些时间才能加载。所以你必须显式/隐式地处理等待。您可以在Selenium Wait in here或Here上阅读更多内容。
我已使用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不会有很大的帮助。阅读relative xpaths和css selectors以及
答案 1 :(得分:0)
点击登录按钮后添加隐式等待。 。driver.manage()超时()implicitwait(5,Timeunit.second)。这将解决。