Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.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 元素硒不可见_Java_Selenium_Click_Web Crawler - Fatal编程技术网

Java 元素硒不可见

Java 元素硒不可见,java,selenium,click,web-crawler,Java,Selenium,Click,Web Crawler,我正在尝试从agoda.com抓取数据。我想按语言、英语筛选所有评论。当我基于选择器进行计数时,得到1,但是,当我尝试单击或等待元素可见时,程序在超时后抛出元素不可见异常 这就是我目前正在尝试的代码 String url = "https://www.agoda.com/en-sg/resorts-world-sentosa-hard-rock-hotel/hotel/singapore-sg.html"; driver.get(url); try { for (WebElement e

我正在尝试从agoda.com抓取数据。我想按语言、英语筛选所有评论。当我基于选择器进行计数时,得到1,但是,当我尝试单击或等待元素可见时,程序在超时后抛出元素不可见异常

这就是我目前正在尝试的代码

String url = "https://www.agoda.com/en-sg/resorts-world-sentosa-hard-rock-hotel/hotel/singapore-sg.html";
driver.get(url);
try {
    for (WebElement element: driver.findElements(By.xpath("//*[starts-with(@id, 'language-')]"))) {
        if (element.getTagName().equalsIgnoreCase("input")) {
            if (element.findElement(By.xpath("..")).getText().equalsIgnoreCase("english")) {
                wait.until(ExpectedConditions.visibilityOf(element));
                element.click();
                break;
            }
        }
    }
}catch(Exception e){
    System.out.println(e.getMessage());
}

我哪里出了问题?

从这里不可能确定出了什么问题,特别是如果没有异常的实际复制粘贴,但是一个原因是元素存在但当前不可见。它可能被抑制或不在视口中。如果您在支持“开发者”模式的浏览器(如Chrome)中打开页面,则可以查看元素属性以确认或反驳这一点

旁注: •发布有关问题的完整信息。确切的异常、它的消息和堆栈跟踪的几行是什么? •如果可能,从您的“开发者”视图发布web元素的详细信息。 •不要捕捉异常,捕捉特定异常。
•复制和粘贴代码片段,而不是重新键入它们。如果您的实际代码名为
printlkn
,则您会遇到更深层次的问题。

请尝试使用以下代码:

// To find and click on required check-box
WebElement element = driver.findElement(By.xpath("//div[input[starts-with(@id, 'language-')]/span[text()='English']]"));
Actions actions = new Actions(driver);
actions.moveToElement(element);
actions.click();
actions.perform();

谢谢你的留言。很抱歉给您带来不便。我的代码有点凌乱,所以我只是觉得重新键入会更好。然而,如果我检查
driver.findElements(By.id(“language-1”)).size()
,它会给我1。但是,它正在被点击。我看不到以
语言-
开头的
id
元素。明确你想要得到什么元素。我指的是评论过滤器中的评论语言部分。language-1是英语的复选框id。