【问题标题】:Locating element after finding by text in selenium python在 selenium python 中通过文本查找后定位元素
【发布时间】:2021-08-09 01:51:24
【问题描述】:

我正在尝试在页面上找到我查找的文本的位置,它可能从位置 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 来定位元素以及它的奇数元素,以便可以点击奇数。

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

【问题讨论】:

  • 分享你尝试过的代码块。

标签: python selenium selenium-webdriver element


【解决方案1】:

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

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()

【讨论】:

  • 它有效。谢谢你。能否请您解释一下: value = team.get_attribute("innerText").replace('\n','') 以及为什么您将换行符替换为没有空格。
  • @Crash_Override - 更具体地说明了结果 value。例如,如果没有替换,value 将是 LIV\n-\nSOU,但有了它,它将是 LIV-SOU。既好读又好理解。
  • 是的,明白了。我的主要目的是直接点击奇数而不点击团队if "CHE" in value:True。我特别想单击 iframe def switchToOver1_5(): driver.find_element_by_xpath('//div[@class="swiper-pagination-bullet gb-widget_swiper-pagination-dot ext-widget_swiper-pagination-dot"][3]').click() 中“超过/低于 1.5”选项卡上的奇数。也就是说,点击超过 1.5 赔率或低于 1.5 赔率,无需点击球队并导航到“超过/低于 1.5”行,然后点击任一赔率。谢谢。
  • @Crash_Override - 但是在我们点击事件后会出现Over/Under 1.5 选项。
  • 没错,动机是使用 xpath driver.find_element_by_xpath('//div[@class="swiper-pagination-bullet gb-widget_swiper-pagination-dot ext-widget_swiper-pagination-dot"][3]') 导航到 Over / Under 1.5 Tab/Section,然后单击与我们想要的团队相关的任一赔率。
猜你喜欢
  • 2020-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多