Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java “如何获得全部”;李",;“的要素”;ul";SeleniumWebDriver中的类_Java_Html_Selenium_Selenium Webdriver - Fatal编程技术网

Java “如何获得全部”;李",;“的要素”;ul";SeleniumWebDriver中的类

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/");

我是SeleniumWebDriver的新手。我遇到一个要求,我必须运行我的测试,点击一个部分中的所有链接。有人能帮我翻译一下Java代码吗。附上一张图片,显示该特定部分的firebug属性。 我尝试了下面的代码,但它返回一个空列表

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初始化,因此条件应为