首页 文章

机器人框架 - 无法单击div / span - React生成的网页

提问于
浏览
0

我有反应生成的网页有这种结构:

div
 ...
   div
   div
     div class=x_1
       <span randomtag=y> text1 </span>
     div class=x
       <span randomtag=z> text2 </span>
     div class=x
       <span randomtag=q> text3 </span>
   div
   div
   div
 ...
div

我想点击randomtag = z . 我试过了:

XPath的:

  • 我可以找到随机标签y的div,只需将结构折腾到div(没有其他标识符)和... / div [2] / div [1]

  • 我不能用xpath得到第二个div(... / div [2] / div [1]可以工作但是... / div [2] / div [2]不起作用)

CSS:

以下也不起作用

css=div > span[randomtag="z"]
css=div.x span[randomtag="z"]

我有点迷失在这里选择正确元素的可能性 .

机器人代码只是基本的等待直到元素可见|定位器(不管它是什么)例如 .

wait until element is visible     css=div.x span[randomtag="z"]
wait until element is visible     xpath=<previous path here>/div[2]/div[2]

有任何想法吗?这是反应的原因吗?

我得到“元素在x秒内不可见” . 对于超时,我尝试了5-30秒 .

编辑:

我还尝试使用搜索工具(浏览器上的dev工具后面)找到xpath,并在搜索时插入xpath或css定位器时找到该元素 .

1 回答

  • 0
    public static void waitUntilElementIsVisible(WebElement element, WebDriver driver) 
    {        
        FluentWait<WebDriver> wait = new FluentWait<WebDriver>(driver);
        wait.pollingEvery(250,  TimeUnit.MILLISECONDS);
        wait.withTimeout(2, TimeUnit.MINUTES);
        wait.ignoring(ElementNotVisibleException.class); //make sure that this exception is ignored
        Function<WebDriver, WebElement> function = new Function<WebDriver, WebElement>()
                {
                    public WebElement apply(WebDriver driver) {
                        System.out.println("Checking for the element!!");                       
                        if(element.isDisplayed() != true)
                        {
                            System.out.println("Target element is not visible");
                        }
                        return element;
                    }
                };
    
        wait.until(function);
    }
    

    然后称之为:

    WebDriver el = driver.FindElement(By.css("yourcss"));
    waitUntilElementIsVisible(el, driver);
    

相关问题