2016-08-15 31 views
0

我试图通过硒python从网页中的元素列表中选择特定的元素进行自动化。这是在网页的第一页,我从5个显示的项目中选择一个列表项目,后来我需要在列出所有五个数字的网站的下一页面中取消选择它们。我如何选择我在网页第一页中选择的特定元素?使用硒python从列表中选择网页中的特定元素

第一页列表项的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> 

我绝对做文本检查这里是硬编码类型选择日数在我已经在第一页中选择。

有人可以建议我一个解决方案,以便硒webdriver点击下一页中的每个元素,并检查它是否注册,如果注册,取消注册?请帮忙。

回答

1

我不确定你使用的是哪个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) 

硒提供等待一个元素的能力被加载和点击,所以告诉你的驱动程序等待这通常是防止缓慢加载页面错误的好方法。

至于取消选择该选项,您必须具有一个列表,该列表提供NULL选择或页面上的脚本来清除您在页面加载时的选择。我对JavaScript并不擅长,但我相信可能有一种注入脚本来取消选择列表项的方法。您可能希望通过Google搜索方式来清除JS中的列表选项,但是我相信会有这样的条件需要满足。

相关问题