1

在 Selenium 中需要一些模式匹配方面的帮助。我正在尝试阅读以下内部 div 标签,

<div>
     <div class="xyz one"></div>

     <div class="xyz two"></div>

     <div class="xyz three"></div>
</div>

有没有办法我可以做到这一点?任何建议将不胜感激。

干杯

4

3 回答 3

4

这是一个 XPath,您可以使用它来选择包含文本“xyz”的所有 div 标记。

"//div[contains(@class, 'xyz')]"

因此,为了使用它,您将使用这一行,它会创建一个包含文本“xyz”的所有 div 的集合

var divElements = driver.FindElements(By.XPath("//div[contains(@class, 'xyz')]"));
于 2012-08-01T22:34:15.437 回答
2
IWebDriver driver = new FirefoxDriver();
driver.FindElement(By.CssSelector("div.xyz"));
于 2012-08-01T09:24:36.267 回答
1

看起来您的问题已经得到解答 Get HTML Source of WebElement in Selenium WebDriver using Python 然后您可以解析您的输出。

编辑

为了让事情变得更简单:(使用 Python)

尝试:

class_list = [] 
my_divs = driver.find_elements_by_css_selector(div[class*=xyz])
for div in my_divs:
   outerHTML = div.get_attribute("outerHTML")
   classpos = outerHTML.find('class=') #find where our class identifier begins
   quote_begin = outerHTML.find('"',classpos) 
   quote_end = outerHTML.find('"', quote_begin+1)
   our_class = outerHTML[classpos:quote_end+1] #get the entire class identifier
   class_list.append(our_class)
   print our_class

我敢肯定,有人用一行代码做的事情和我的 4 行代码一样,但这是我能想到的。此外,此代码可以很快更改为 Java

于 2012-08-01T04:02:22.103 回答