Java “如何获得全部”;李",;“的要素”;ul";SeleniumWebDriver中的类
我是SeleniumWebDriver的新手。我遇到一个要求,我必须运行我的测试,点击一个部分中的所有链接。有人能帮我翻译一下Java代码吗。附上一张图片,显示该特定部分的firebug属性。 我尝试了下面的代码,但它返回一个空列表Java “如何获得全部”;李",;“的要素”;ul";SeleniumWebDriver中的类,java,html,selenium,selenium-webdriver,Java,Html,Selenium,Selenium Webdriver,我是SeleniumWebDriver的新手。我遇到一个要求,我必须运行我的测试,点击一个部分中的所有链接。有人能帮我翻译一下Java代码吗。附上一张图片,显示该特定部分的firebug属性。 我尝试了下面的代码,但它返回一个空列表 public static void main(String[] args) { WebDriver driver = new FirefoxDriver(); driver.get("https://dev.www.tycois.com/");
public static void main(String[] args) {
WebDriver driver = new FirefoxDriver();
driver.get("https://dev.www.tycois.com/");
driver.manage().window().maximize();
List<WebElement> allElements = driver.findElements(By.xpath("html/body/div[10]/div/div[1]/div[3]/ul[1]/li[5]"));
System.out.println(allElements);
for (WebElement element: allElements) {
System.out.println(element.getText());
element.click();
}
}
publicstaticvoidmain(字符串[]args){
WebDriver=newfirefoxdriver();
驱动程序。获取(“https://dev.www.tycois.com/");
driver.manage().window().maximize();
List-allegements=driver.findElements(By.xpath(“html/body/div[10]/div/div[1]/div[3]/ul[1]/li[5]”);
系统输出打印LN(等位基因);
for(WebElement:等位基因){
System.out.println(element.getText());
元素。单击();
}
}
提前感谢。您可以使用like,例如:
driver.findElements(By.xpath("//li[contains(@class,'managed-services')]/ul/li/a"));
使用附加到html根的XPath通常是个坏主意,即绝对XPath,您应该始终尝试使用尽可能短的选择器,即相对XPath
还请记住,如果链接被隐藏,您需要触发操作,这将启用它们,例如打开菜单。您可以使用下面的代码进行尝试 只需根据应用程序更改xpath即可
List<WebElement> liElements = driver.findElements(By.xpath(".//*[@id='fk-mainhead-id']/div[2]/div/div/ul/li"));
System.out.println(liElements);
for(int i=1; i <= liElements.size(); i++)
{
WebElement linkElement = driver.findElement(By.xpath(".//*[@id='fk-mainhead-id']/div[2]/div/div/ul/li[" + i + "]/a"));
System.out.println(linkElement.getText());
}
listlements=driver.findElements(By.xpath(“./*[@id='fk-mainhead-id']/div[2]/div/div/ul/li”);
系统输出打印项(元素);
对于(int i=1;i详细信息不清楚,但看起来您正在尝试打印页脚的“行业”部分中的链接。如果是这样,这应该可以工作
driver.get("https://dev.www.tycois.com/");
WebElement industries = driver.findElement(By.cssSelector("div.columns.three.alpha > ul"));
List<WebElement> links = industries.findElements(By.tagName("li"));
for (int i = 1; i < links.size(); i++)
{
System.out.println(links.get(i).getText());
}
driver.get(“https://dev.www.tycois.com/");
WebElement industries=driver.findElement(By.cssSelector(“div.columns.three.alpha>ul”);
列表链接=industries.findElements(按.tagName(“li”));
对于(int i=1;i
您不能单击此循环中的链接,因为一旦单击第一个链接,您将不再在页面上。我建议您将每个链接的url存储在一个数组中,然后driver.get(url)
,或者您可以将预期的URL存储在一个数组中,并将链接中的URL与预期的URL进行比较,而无需进行任何导航。选择权由您决定…JeffC的解决方案与下面详述的调整配合使用-
driver.get("https://dev.www.tycois.com/");
WebElement industries =
driver.findElement(By.cssSelector("div.columns.three.alpha > ul"));
List<WebElement> links = industries.findElements(By.tagName("li"));
for (int i = 0; i < links.size(); i++)
{
System.out.println(links.get(i).getText());
}
driver.get(“https://dev.www.tycois.com/");
WebElement industries=
driver.findElement(通过.cssSelector(“div.columns.three.alpha>ul”);
列表链接=industries.findElements(按.tagName(“li”));
对于(int i=0;i
上面的备选答案,我不能评论,因为我是该网站的新手
for(int i=1; i < links.size(); i++)
for(int i=1;i
但是,这会遗漏列表中的第一个元素-
for(int i=1; i <= links.size(); i++)
for(int i=1;i附件丢失,请详细指定您尝试执行的操作。由于int i由1初始化,因此条件应为