匹配链接[Selenium]

时间:2017-06-27 23:48:08

标签: python selenium

您好我在尝试使用Selenium和python

查找内容的链接时遇到了一些问题
<a class="name-link" 
href="/shop/accessories/wyqibr8gd/h8vy9fid4">Supreme®/Hanes® Crew Socks (4 
Pack)</a>

<a class="name-link" href="/shop/accessories/wyqibr8gd/h8vy9fid4">Black</a>

我要做的是获取顶级产品的链接并浏览并将其与黑色的颜色链接相匹配

我现在迷路了,我的所有想法都没有成功。如果您有任何想法,请告诉我

3 个答案:

答案 0 :(得分:0)

这是Java,但逻辑可以重复使用 -

//Get the list of all the links
List<WebElement> allLinks = driver.findElements(By.xpath("//a"));

//Get the href from the first link
String hrefFirstLink = allLinks.get(0).getAttribute("href");

//Search all the links for find the href again
for(int i=1; i<allLinks.size(); i++) { //loop from 1 as index 0 has the same link
  if(allLinks.get(i).getAttribute("href").equals(hrefFirstLink)) {
    String color = allLinks.get(i).getAttribute("text");
    System.out.println(color); // this would print Black
    break;
  }
}

答案 1 :(得分:0)

Python中的逻辑

 records = driver.find_elements_by_xpath('//a')

  for record in records:
     print record.text

答案 2 :(得分:0)

我会找到与关联类“name-link”的所有链接(其他答案将拉动所有链接),然后构建与每个链接关联的WebElements的映射。这里有一些(丑陋)代码可以实现这一点,生成一个字典,其中键是产品名称和颜色之间常见的url的规范化版本,值是具有该公共URL的链接列表:

    name_link_elements = self.driver.find_elements_by_css_selector('a.name-link')

    product_links = {}
    for link_element in name_link_elements:
        href = link_element.get_attribute('href')
        key = urlparse.urlparse(href).path.replace("/", "_")
        if key not in product_links.keys():
            product_links[key] = {}
        if 'products' not in product_links[key].keys():
            product_links[key]['products'] = []
        product_links[key]['href'] = href
        product_links[key]['products'].append(link_element)

    print product_links