在 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()
我正在尝试找到我查找的文本所在的元素位置,在页面上它可能出现在位置 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()