在Selenium中需要一些关于模式匹配的帮助。我正在尝试阅读以下内部div标签,
<div>
<div class="xyz one"></div>
<div class="xyz two"></div>
<div class="xyz three"></div>
</div>
有没有办法可以做到这一点?任何建议都会非常感激。
干杯
答案 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