Selenium WebDriver不执行所需的操作,尽管我的Xpath是正确的:
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();
}
}发布于 2019-11-29 04:08:46
是的,你所有的定位器都是正确的。您的问题来自以下几行:
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)再次切换即可。
https://stackoverflow.com/questions/59091074
复制相似问题