首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >元素notVisible异常?在动态自暗示下拉- Selenium - Java中

元素notVisible异常?在动态自暗示下拉- Selenium - Java中
EN

Stack Overflow用户
提问于 2019-04-09 02:30:14
回答 2查看 147关注 0票数 0

我正在尝试处理一个自动暗示的多巴胺,在这里,我输入一个searchTerm结果将由术语来表示。我试图循环它,并检查实际文本是否等于预期的文本,以及是否单击它

网站:https://www.zoopla.co.uk/

这就是我要处理的那一页

单击“抛出”元素时,是否有其他方法可以处理自动提示下拉列表?

我使用for循环从列表中获取选项,并尝试与列表中的文本进行比较,并根据实际情况选择它

Homepage.java

代码语言:javascript
复制
//selecting region
public void selectRegion(String regionName) throws InterruptedException {

    int regionCount = getOptions().size();
    System.out.println("count of region" + regionCount);

    for(int i=0;i<getOptions().size();i++) {

        String region = getOptions().get(i).getText();
        System.out.println(regionName);

        if(regionName.equals(regionName)) {
            try {
            getOptions().get(i).click();
            break;
            }
            catch (Exception e) {
                System.out.println("exception >>" + e.toString()) ;             }
        }
    }
}


@Test
public void homePage() throws InterruptedException {


    HomePage homePage = PageFactory.initElements(driver, HomePage.class);
    homePage.EnterSearch("lond");

    Thread.sleep(1000);
    homePage.selectRegion("London");

    homePage.clickSearchBtn();

所需的选项是选择,但在控制台中,它会抛出重复的元素,而不是可见的异常。

> exception >>org.openqa.selenium.ElementNotVisibleException: element not interactable (Session info: chrome=73.0.3683.86) (Driver info: chromedriver=73.0.3683.75,platform=Linux 4.15.0-47-generic x86\_64) (WARNING: The server did not provide any stacktrace information) Command duration or timeout: 0 milliseconds Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-118

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-04-09 06:14:46

请参阅以下代码:

HomePage

初始化webelements:

代码语言:javascript
复制
@FindBy(css = "ul.ui-autocomplete>li>a")
List<WebElement> regions;

方法选择区域:

代码语言:javascript
复制
public void selectRegion(String param) {
    for (WebElement e : regions) {
        if (e.getText().equals(param)) {
            e.click();
            break;
        }
    }
}

这是你的召唤课

代码语言:javascript
复制
driver.get("https://www.zoopla.co.uk/");
driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
HomePage page = new HomePage(driver);
page.enterSearch("lond");
page.selectRegion("London");
page.clickSearchBtn();

代码在我的chrome浏览器中运行良好,如果您有任何问题,请告诉我。

票数 1
EN

Stack Overflow用户

发布于 2019-04-09 04:40:00

代码语言:javascript
复制
public void searchUsingAutoComplete(String element,String reuiredTextToClick) {
    WebDriverWait wait = new WebDriverWait(d,30);
    wait.until(ExpectedConditions.visibilityOfAllElementsLocatedBy(By.xpath(element)));

    List<WebElement> list=d.findElements(By.xpath(element));
log.info("Auto Suggest List ::" + list.size());
    int i;
    for( i = 0 ;i< list.size();i++)
    {
        log.info(list.get(i).getText());

        if(reuiredTextToClick.equalsIgnoreCase(list.get(i).getText()))
        {
            list.get(i).click();
            break;
        }else {
            log.info(list.get(i).getText()+" not equals "+reuiredTextToClick);
        }
        if(i==list.size()-1) {log.error(reuiredTextToClick+"  not found");
        throw new ElementNotVisibleException("Element not found with "+ reuiredTextToClick+" text"); 

        }
                }

使用上面的代码您的元素将是:-//ul@id=‘ui-id-1’/li,我尝试使用这段代码,我可以选择所需的文本

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55584275

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档