webdriver - как перечислить все и нажать на ссылку по одному - PullRequest
0 голосов
/ 06 июня 2018

Могу ли я перечислить все title = "Race 1" , "Race 2", "Race 3" , а затем использовать python из следующего HTML

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

А затем нажмите один за другим, что означает общее количество нажатий 3 раза.первый щелчок «Гонка 1» , второй щелчок «Гонка 2» и третий щелчок «Гонка 3» , спасибо!

<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 голосов
/ 06 июня 2018

<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, он возвращает вам список веб-элементов, которые соответствуют вашей стратегии определения местоположения.Затем вы можете выполнить цикл по этому списку для выполнения действий над отдельными элементами.

Попробуйте следующий фрагмент кода.

buttons_list = driver.find_elements_by_xpath("//img[contains(@title, 'Race')]")
for button in buttons_list:
    button.click()
0 голосов
/ 06 июня 2018

Во-первых, кажется, что элементы, на которые вы пытаетесь щелкнуть, - 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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...