尽管我的Xpath正确,Selenium WebDriver并未执行所需的操作:
public class Openchrome{
public static void main(String[] args){
System.setProperty("webdriver.chrome.driver","C:\\Users\\DELL\\Downloads\\chromedriver.exe");
WebDriver driver=new ChromeDriver();
driver.get("http://www.amazon.in");
driver.manage().window().maximize();
driver.manage().deleteAllCookies();
driver.manage().timeouts().pageLoadTimeout(50, TimeUnit.SECONDS);
driver.findElement(By.id("twotabsearchtextbox")).sendKeys("Sri Raghavendra Swamy");
driver.findElement(By.className("nav-input")).click();
driver.findElement(By.xpath("//span[contains(text(),'Sri Sadhguru Raghavendra Swamy Jeevitha Charitra')]")).click();
WebDriverWait wait = new WebDriverWait(driver,60);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//a[@id='buybox-see-all-buying-choices-announce']")));
driver.findElement(By.xpath("//a[@id='buybox-see-all-buying-choices-announce']")).click();
}
}
答案 0 :(得分:1)
是的,您所有的定位器都是正确的。您的问题来自以下行:
driver.findElement(By.xpath("//span[contains(text(),'Sri Sadhguru Raghavendra Swamy Jeevitha Charitra')]")).click();
完成上述操作后,它将带您进入新标签页。您需要先进行切换才能执行某项操作,因此在执行上述行之后请使用.getWindowHandles()
,如下所示:
ArrayList<String> tabs = new ArrayList<String>(driver.getWindowHandles());
//switch to second tab
driver.switchTo().window(tabs.get(1));
WebDriverWait wait = new WebDriverWait(driver,60);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//a[@id='buybox-see-all-buying-choices-announce']")));
driver.findElement(By.xpath("//a[@id='buybox-see-all-buying-choices-announce']")).click();
如果您想再次返回第一个标签,只需使用tabs.get(0)
再次切换即可。