<div class="col-md-3 col-sm-3">
<h4>Free Resources</h4>
<ul>
<li>
<a href="/ncert-solutions/ncert-solutions-class-10-maths">NCERT Solutions for Class 10 Maths</a>
</li>
<li>
<a href="/ncert-solutions/ncert-solutions-class-9-maths">NCERT Solutions for Class 9 Maths</a>
</li>
<li>
<a href="/ncert-solutions/ncert-solutions-class-10-science">NCERT Solutions for Class 10 Science</a>
</li>
<li>
<a href="/ncert-solutions/ncert-solutions-class-9-science">NCERT Solutions for Class 9 Science</a>
</li>
<!-- CBSE Previous Year Paper -->
<li>
<a href="/contents/question-solutions">CBSE Previous Year Paper</a>
</li>
<!-- RD Sharma solutions-->
<li>
<a href="/rd-sharma-solutions/rd-sharma-class-10-solutions">RD Sharma Class 10 Solutions</a>
</li>
<!-- Tutors SEO Pages-->
<li>
<a href="/tutors/home-tuition-teacher">Home Tuition</a>
</li>
<li>
<a href="/tutors/maths-tuition-teacher">Math Teacher</a>
</li>
<li>
<a href="/tutors/science-tuition-teacher">Science Teacher</a>
</li>
</ul>
</div>
我已粘贴了我正在使用的HTML。为了使事情更清楚,在class name = 'col-md-3 col-sm-3'
的同一层次结构中还存在两个div标签。
我发现这个问题很有用(How to get all "li" elements of "ul" class in Selenium WebDriver),但我想知道如何使用PageFactory做同样的事情?
请在这里帮助我。我想我将找到列表<div>
元素的根(使用@FindBy
注释)并为每个<a>
标记执行循环,并从Element存储库类返回此列表网页。有一个更好的方法吗?我特别想要这个版本的PageFactory。
答案 0 :(得分:1)
您可以使用@FindBys
等
@FindBys(xpath)
List<WebElement> elements;
例如,如果在UL标记下有元素列表。然后您的xpath将为//ul/li/a
,您可以在页面工厂中使用它,如下所示。
@FindBys(xpath="//ul/li/a")
public List<WebElement> elements;
您可以在脚本或方法中调用它,我认为元素在主页上,
Home homePage = new HomePage(driver);
PageFactory.initElements(driver, homePage);
homePage.elements.get(0).click //to click on first element
或迭代所有元素并获取下面给出的值。
for(WebElement element:elements)
sop(element.getText();