硒模式匹配

时间:2012-08-01 02:07:50

标签: selenium

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

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

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

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

有没有办法可以做到这一点?任何建议都会非常感激。

干杯

3 个答案:

答案 0 :(得分:3)

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

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

因此,为了使用它,你可以使用这一行,它创建一个包含文本'xyz'的所有div的集合

var divElements = driver.FindElements(By.XPath("//div[contains(@class, 'xyz')]"));

答案 1 :(得分:2)

IWebDriver driver = new FirefoxDriver();
driver.FindElement(By.CssSelector("div.xyz"));

答案 2 :(得分: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