繁体   English   中英

使用Selenium Python从列表中选择网页中的特定元素

[英]Select a particular element in a webpage from list using selenium python

我正在尝试通过硒python自动化以从网页中的元素列表中选择特定元素。 那是在网页的第一页中,我从显示的5个项目中选择一个列表项,稍后我需要在列出所有五个数字的网站的下一页中取消选择它们。 如何选择我在网页首页中选择的特定元素?

第一页列表项的HTML代码如下所示->

<li class="ng-scope" ng-repeat="line in accountLines">
<label class="list-item inline-group">
<div class="inline-group-addon">
<div class="inline-group-main">
<p class="ng-binding">
</div>

我已经生成了xpath为:

.//*[@id='oobe-login']/body/div[1]/main/div/div[1]/ul/li[1]/label/div[2]/p
.//*[@id='oobe-login']/body/div[1]/main/div/div[1]/ul/li[2]/label/div[2]/p
.//*[@id='oobe-login']/body/div[1]/main/div/div[1]/ul/li[3]/label/div[2]/p
.//*[@id='oobe-login']/body/div[1]/main/div/div[1]/ul/li[4]/label/div[2]/p
.//*[@id='oobe-login']/body/div[1]/main/div/div[1]/ul/li[5]/label/div[2]/p

下一页的HTML代码是列出所有元素的:

li class="ng-scope" ng-repeat="line in allLinesList">
<a class="list-item inline-group reverse highlight" ng-click="expandSettings($index)" ng-class="(settings.selectedLine === $index && settings.expanded) ? 'active' : ''" href="">
</li>

我可以在这里进行文本检查,这是一种硬编码类型,可以选择我在第一页中选择的号码。

有人可以建议我一个解决方案,让Selenium WebDriver单击下一页中的每个元素并检查它是否已注册,如果已注册,则取消注册? 请帮忙。

我不确定您使用的是哪个驱动程序,但是我在此处包含的代码段对Firefox,Chrome和CasperJS驱动程序是否有效。

要单击下拉列表中的选项,您需要使用上面的XPATH属性之一来使用类似以下的内容:

opt_button = driver.wait.until(EC.element_to_be_clickable((By.XPATH, """.//*[@id='oobe-login']/body/div[1]/main/div/div[1]/ul/li[1]/label/div[2]/p""")))
try:
    opt_button.click() #This is the part that actually selects the option
    print "Clicked the list item!"
except ElementNotVisibleException, s:
    print "Could not click the list item..."
    print "Error: "+str(s)

Selenium提供了等待元素加载和可点击的功能,因此告诉驱动程序等待通常是防止错误加载页面的好方法。

至于取消选择该选项,则必须在页面上提供一个提供NULL选择的列表或一个脚本,以在页面加载时清除选择。 我对JavaScript不太满意,但是我相信可能有一种方法可以注入脚本来取消选择列表项。 您可能想对Google进行搜索,以找到使用JS清除列表选择的方法,但是我敢肯定需要满足一些条件才能做到这一点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM