在 selenium python 中通过文本查找后定位元素

Locating element after finding by text in selenium python

我正在尝试找到我查找的文本所在的元素位置,在页面上它可能出现在位置 1-10 的位置,并且在倒计时后它们会随机更改到不同的位置。 举个例子: 我的搜索是“CHE”,它可以出现在页面 iframe 内 xpath //div[@class="gb-widget_match-list ext-widget_match-list"] 位置 1-10 的任何位置。 “CHE”是在 driver.find_element_by_xpath('//*[contains(text(), "CHE")]').is_displayed() 中找到的,但我想利用 python 来定位该元素及其赔率元素,以便点击赔率。

这里是 link 网站:https://www.betking.com/virtuals/v/kings-league 谢谢。

如果您想点击基于团队的事件,下面的代码可能会对您有所帮助。

driver.implicitly_wait(10)
driver.get("https://www.betking.com/virtuals/v/kings-league")
driver.switch_to.frame(1)
teams = driver.find_elements_by_xpath("//div[@class='gb-widget_match-info-teams']")
for team in teams:
    value = team.get_attribute("innerText").replace('\n','')
    if "CHE" in value:
        team.click()
        time.sleep(2)
        break
driver.quit()

更新:通过 Arrow 个按钮进行导航。

driver.get("https://www.betking.com/virtuals/v/kings-league")
driver.switch_to.frame(1)
teams = driver.find_elements_by_xpath("//div[@class='gb-widget_match-info-teams']")
teams[0].click()
time.sleep(2)
nextarrow = driver.find_element_by_xpath("//span[@class='gb-widget_content-swiper-next']")
while "disabled" not in nextarrow.get_attribute("class"):
    nextarrow.click()
    time.sleep(1)

更新 2:

driver.get("https://www.betking.com/virtuals/v/kings-league")
driver.switch_to.frame(1)
next = driver.find_element_by_xpath("//span[@class='gb-widget_content-swiper-next']")
for i in range(3):
    next.click()
    time.sleep(1)

teams = driver.find_elements_by_xpath("//div[contains(@class,'swiper-slide-active')]/div")
for team in teams:
    time.sleep(1)
    value = team.find_element_by_xpath(".//div[@class='gb-widget_match-info-teams']").get_attribute("innerText").replace('\n','')
    if "CHE" in value:
        buttons = team.find_elements_by_tag_name("button")
        # for button in buttons:
        #     print(button.get_attribute("innerText"))
        buttons[0].click()
        time.sleep(2)
        break
driver.quit()