webdriver - 如何列出所有并逐个单击href

时间:2018-06-06 01:46:51

标签: python selenium selenium-webdriver webdriver

我可以列出所有 title ="第1场比赛" "比赛2" &#34 ;比赛3" 然后使用来自下载HTML的python

driver.find_element_by_name('title=Race1').click() 

然后逐个点击,这意味着总点击3次。首先点击"比赛1" ,第二次点击"比赛2" ,然后点击"比赛3&# 34; ,谢谢!

<table border="0" cellspacing="0" cellpadding="0">
<tbody><tr>
<td style="padding-right:3px;">Race</td>
<td class="raceButton" style="PADDING-LEFT:3px"><a href="/racing/pages/odds_wp.aspx?lang=EN&amp;date=06-06-2018&amp;venue=HV&amp;raceno=1" onmouseout="MM_swapImgRestore();" onmouseover="MM_swapImage('race_num_1', '', '/racing/info/images/num_1_on.gif?CV=L209R1d',1);"><img id="raceSelBtn1" src="/racing/info/images/num_1_on.gif?CV=L209R1d" border="0" title="Race 1"></a></td>
<td class="raceButton" style="PADDING-LEFT:3px"><a href="/racing/pages/odds_wp.aspx?lang=EN&amp;date=06-06-2018&amp;venue=HV&amp;raceno=2" onmouseout="MM_swapImgRestore();" onmouseover="MM_swapImage('race_num_2', '', '/racing/info/images/num_2_on.gif?CV=L209R1d',1);"><img id="raceSelBtn2" src="/racing/info/images/num_2.gif?CV=L209R1d" border="0" title="Race 2"></a></td>
<td class="raceButton" style="PADDING-LEFT:3px"><a href="/racing/pages/odds_wp.aspx?lang=EN&amp;date=06-06-2018&amp;venue=HV&amp;raceno=3" onmouseout="MM_swapImgRestore();" onmouseover="MM_swapImage('race_num_3', '', '/racing/info/images/num_3_on.gif?CV=L209R1d',1);"><img id="raceSelBtn3" src="/racing/info/images/num_3.gif?CV=L209R1d" border="0" title="Race 3"></a></td>
</tr>
</tbody></table>

2 个答案:

答案 0 :(得分:2)

<img id="raceSelBtn1" src="/racing/info/images/num_1_on.gif?CV=L209R1d" border="0" title="Race 1">

driver.find_element_by_name('title=Race1').click()无法正常工作,因为您想要的节点没有名称属性!

您可以通过find_element_by_id('raceSelBtn1)`

访问上述节点的方法之一

但是既然你想要一个webelements列表,你将不得不使用find_elements_by_xpath()方法(复数)。当您使用find_elements_by_xxx时,它会返回一个符合您给定位置策略的webelements列表。然后,您可以遍历此列表以对单个元素执行操作。

请尝试以下代码段。

buttons_list = driver.find_elements_by_xpath("//img[contains(@title, 'Race')]")
for button in buttons_list:
    button.click()

答案 1 :(得分:1)

首先, 您尝试点击的元素似乎是img。因此,如果您想要找到链接本身,您可以尝试获取图像父级(通过xpath)。

您可以这样做:

for i in range(1,4):
    img_btn = driver.find_element_by_id('raceSelBtn{}'.format(i))
    btn_link = img_btn.find_element_by_xpath('..') # Get img parent, the link
    btn_link.click()