查找选择器形成随机链接

时间:2016-02-01 15:05:18

标签: java selenium selenium-webdriver webdriver

我不知道如何找到点击了哪个项目链接。 我有网页http://demo.opencart.com/,我选择产品并去比较产品,我使用随机点击"添加到购物车",我知道检查项目的价格我点击"加入购物车"与购物车价格相同。

public void chooseRandomItem() {
    List <WebElement> links = driver.findElements(By.xpath("//input[@value = \"Add to Cart\"]"));
    Random gen = new Random();
    WebElement link = links.get(gen.nextInt(links.size())); 
    link.click();

它的工作,但现在我不知道哪个&#34;添加到购物车&#34;点击了,我不能用购物车中的价格来支持它。我该如何解决?

________________________修订__________________________

模拟:

  1. 转到http://demo.opencart.com/index.php?route=product/search&search=ipod

  2. 点击&#34;比较项目&#34;在项目

  3. 点击网址&#34;产品比较&#34;

    1. 选择一个随机商品,然后点击&#34;添加到购物车&#34;

    2. 检查购物车中的价格是否与我选择(随机)商品价格相同

  4. 现在我选择随机链接,我必须将此随机商品的价格与购物车中的价格进行比较

2 个答案:

答案 0 :(得分:0)

因为这都在HTML表格中,所以它会让它变得更难。我会做的是:

  1. 计算表格列数(totColumns)。通过计算HTML TDTR中的TABLE来执行此操作。
  2. 获取2和r之间的随机数(totColumns)。你可以轻松地谷歌这一点。
  3. 从列r获取价格,然后点击列r中的添加到购物车链接。您知道哪一行代价,只需从该行抓取TDr。对“添加到购物车”链接行执行相同操作并单击它。
  4. 现在,您可以将“产品比较”页面上的价格与购物车中的价格进行比较。

    编辑:在考虑了这一点之后稍微改变并添加了一些细节。

答案 1 :(得分:0)

简而言之,我将链接和价格(或更多信息)包装成一种product-ui-element,以便在代码中获得更好的结构。

首先,您将所有产品作为集合,并随意选择一个。其次,您获取此具体产品的信息。

    var products = WebDriver.FindAdaptedElements(By.CssSelector("div.product-thumb")); 

    // do your random selection
    var product = products.ElementAt(???); // do your random selection

    // get product related elements - the price:
    var price = product.FindAdaptedElement(By.CssSelector("p.price")).Text;

    // add to cart
    product.FindAdaptedElement(By.CssSelector("div.button-group>button")).Click();
    // .. do the checks ..

在下一步中,您可以使用 price 变量(字符串)来验证该产品的正确金额。