我正在尝试将selenium与python一起使用以通过轮播上的不同选项卡(按钮?),以便可以从每个选项卡中收集数据,但是问题是我需要使用的webelement的名称相同每个标签(按钮)。
我可以使用.child查找以下html代码并获取列表,但我不知道如何使用Selenium。
[<div class="rj-carousel-item" data-uat="carousel-item-sport"><span class="icon i-o-sport-2 i-32"></span><div class="rj-carousel-item__details"><div class="rj-carousel-item__sportName" data-uat="carousel-item-sportName">Basketball</div><div class="rj-carousel-item__eventsCount" data-uat="carousel-item-eventsCount">14</div></div></div>,
<div class="rj-carousel-item" data-uat="carousel-item-sport"><span class="icon i-o-sport-8 i-32"></span><div class="rj-carousel-item__details"><div class="rj-carousel-item__sportName" data-uat="carousel-item-sportName">Ice Hockey</div><div class="rj-carousel-item__eventsCount" data-uat="carousel-item-eventsCount">10</div></div></div>,
<div class="rj-carousel-item" data-uat="carousel-item-sport"><span class="icon i-o-sport-1 i-32"></span><div class="rj-carousel-item__details"><div class="rj-carousel-item__sportName" data-uat="carousel-item-sportName">Soccer</div><div class="rj-carousel-item__eventsCount" data-uat="carousel-item-eventsCount">11</div></div></div>,
<div class="rj-carousel-item" data-uat="carousel-item-sport"><span class="icon i-o-sport-6 i-32"></span><div class="rj-carousel-item__details"><div class="rj-carousel-item__sportName" data-uat="carousel-item-sportName">Tennis</div><div class="rj-carousel-item__eventsCount" data-uat="carousel-item-eventsCount">14</div></div></div>
现在,如果我使用
new_tab = driver.find_element_by_class_name('rj-carousel-item')
new_tab.click()
然后我可以访问第一个选项卡,但我不知道如何进入其余选项卡。再次,我假设这与列出这些内容有关,但是我似乎不知道如何
答案 0 :(得分:2)
要获取元素列表,请使用find_elements
返回列表,然后可以进行迭代。
使用find_elements_by_class_name()
:
listoftab=driver.find_elements_by_class_name("rj-carousel-item")
for new_tab in listoftab:
new_tab.click()
或find_elements_by_css_selector()
:
listoftab=driver.find_elements_by_css_selector(".rj-carousel-item")
for new_tab in listoftab:
new_tab.click()
答案 1 :(得分:1)
您可以在文本帮助下单击。
tab = driver.find_element_by_xpath("//div[.='Basketball'])
tab.click()
您也可以点击足球和网球。
OR
尽管您也可以使用获取元素列表并单击来进行迭代
tabs=driver.find_elements_by_class_name("rj-carousel-item__sportName")
for tab in tabs:
tab.click()
答案 2 :(得分:1)
要遍历调用click()
的不同选项卡,可以编写如下方法:
def click_me(myString):
driver.find_element_by_xpath("//div[@class='rj-carousel-item']//div[@class='rj-carousel-item__sportName'][.='" + myString + "']").click()
现在,您可以从主方法中调用该方法,如下所示:
click_me("Basketball")
click_me("Ice Hockey")
click_me("Soccer")
click_me("Tennis")
答案 3 :(得分:0)
使用CSS即可 div.rj-carousel-item:nth-of-type(2)