Selenium/Java 在从主页关注 link 后,页面元素没有此类元素异常
Selenium/Java No Such Element Exception for elements of a page after following a link from homepage
自动化新手,需要一些帮助。
我在本网站上使用 Selenium Webdriver 和 Java - Webdriver University 到目前为止,这段代码在“element.click()”步骤(即, 在页面上找不到该元素):
driver.manage().window().maximize();
driver.get("http://webdriveruniversity.com");
Thread.sleep(3000);
// Follow the link to another page
WebElement link = driver.findElementByXPath("(//div[@class=\"section-title\"])[6]");
link.click();
Thread.sleep(3000);
// Click on the element
WebElement element = driver.findElementByXPath("(//button[@class='accordion'])[1]");
element.click();
但是,当我直接转到链接页面时,它发现该元素很好
driver.manage().window().maximize();
driver.get("http://webdriveruniversity.com/Accordion/index.html");
// Click on the element
WebElement element = driver.findElementByXPath("(//button[@class='accordion'])[1]");
element.click();
我使用等待元素可见性和线程休眠,结果相同。
知道这里可能是什么问题吗?
您是否注意到当您单击 link 时,页面会在新标签页中打开?那是你的问题。
您需要切换到新标签页。
ArrayList<String> tabs = new ArrayList<String> (driver.getWindowHandles());
driver.switchTo().window(tabs.get(1)); //here you are switch to second tab
希望下面的代码能解决您的问题。
Used the getWindowHandles() to capture handle of newly opened tab and switch to the
tab
// Follow the link to another page
WebElement link = driver.findElement(By.xpath("(//div[@class=\"section-title\"][6]"));
link.click();
Set<String> allWindow = driver.getWindowHandles();
Iterator<String> itr = allWindow.iterator();
while (itr.hasNext()) {
String wind = itr.next().toString();
driver.switchTo().window(wind);
}
Thread.sleep(3000);
// Click on the element
WebElement element = driver.findElement(By.xpath("(//button[@class='accordion'][1]"));
element.click();
Thread.sleep(3000);
driver.close();
}
自动化新手,需要一些帮助。
我在本网站上使用 Selenium Webdriver 和 Java - Webdriver University 到目前为止,这段代码在“element.click()”步骤(即, 在页面上找不到该元素):
driver.manage().window().maximize();
driver.get("http://webdriveruniversity.com");
Thread.sleep(3000);
// Follow the link to another page
WebElement link = driver.findElementByXPath("(//div[@class=\"section-title\"])[6]");
link.click();
Thread.sleep(3000);
// Click on the element
WebElement element = driver.findElementByXPath("(//button[@class='accordion'])[1]");
element.click();
但是,当我直接转到链接页面时,它发现该元素很好
driver.manage().window().maximize();
driver.get("http://webdriveruniversity.com/Accordion/index.html");
// Click on the element
WebElement element = driver.findElementByXPath("(//button[@class='accordion'])[1]");
element.click();
我使用等待元素可见性和线程休眠,结果相同。 知道这里可能是什么问题吗?
您是否注意到当您单击 link 时,页面会在新标签页中打开?那是你的问题。 您需要切换到新标签页。
ArrayList<String> tabs = new ArrayList<String> (driver.getWindowHandles());
driver.switchTo().window(tabs.get(1)); //here you are switch to second tab
希望下面的代码能解决您的问题。
Used the getWindowHandles() to capture handle of newly opened tab and switch to the
tab
// Follow the link to another page
WebElement link = driver.findElement(By.xpath("(//div[@class=\"section-title\"][6]"));
link.click();
Set<String> allWindow = driver.getWindowHandles();
Iterator<String> itr = allWindow.iterator();
while (itr.hasNext()) {
String wind = itr.next().toString();
driver.switchTo().window(wind);
}
Thread.sleep(3000);
// Click on the element
WebElement element = driver.findElement(By.xpath("(//button[@class='accordion'][1]"));
element.click();
Thread.sleep(3000);
driver.close();
}