【问题标题】:Selenium random click to Div'sSelenium 随机点击到 Div 的
【发布时间】:2020-09-03 14:23:06
【问题描述】:

我正在测试一个网站,我想随机获取一个 div 并点击它。

每个Div都有产品图片。

网站是这样的:

https://www.trendyol.com/tum--urunler?q=bilgisayar&qt=bilgisayar&st=bilgisayar

我该怎么做?

【问题讨论】:

    标签: java selenium testing selenium-webdriver nullpointerexception


    【解决方案1】:

    您可以使用以下代码:

    List<WebElement> div_elements = driver.findElememts(By.xpath(“//div[@class=‘p-card-wrppr’]”));
    Random random = new Random();
    int num = random.nextInt(div_elements.size());
    div_elements.get(num).click();
    

    我假设你想点击任何类 p-card-wrppr 的 div。如果您想要具有不同类的 div,请相应地更改您的 xpath。

    【讨论】:

    • @Batuhan Bakar 抱歉,它应该是 nextInt 。我错过了。现在试试我已经更新了代码。
    • @BatuhanBakar 如果它解决了您的问题,您应该接受/支持投票答案。原因:它可以帮助其他有类似问题的人,因为接受的答案有更多的可见性。 stackoverflow.com/help/….
    【解决方案2】:

    我不是很精通java,但是你会做的是获取div的总数,然后生成一个1到N之间的随机数,然后点击它。在 c# 中它看起来像这样:

    // This will get you the number of DIVs under the 'prdct-cntnr-wrppr' class
    int numDivs = driver.WebDriver.GetXpathCount("//*[@class='prdct-cntnr-wrppr']/div");
    Random ran = new Random();
    int randomNum = ran.Next(1,numDivs); // generates a random number between 1 and number of divs
    driver.FindElement(By.XPath(String.Format("//*[@class='prdct-cntnr-wrppr']/div[{0}]", randomNum))).Click();
    

    请注意,这仅在您查看相同级别的 div 时才有效。如果你想要 sub-divs,那就有点不同,但或多或​​少是一样的。

    【讨论】:

    • 您也可以从文档中获取所有 div,将它们添加到列表中,然后从列表中随机选择一个,开销更大,但由于嵌套更改,一个 div 掉入裂缝的可能性较小在文档中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-13
    相关资源
    最近更新 更多