用 python selenium 单击 class 中的 span 元素
Clicking a span element in a class with python selenium
我正在尝试点击进入本网站的 Over/Under 部分:
https://www.oddsportal.com/soccer/chile/primera-division/curico-unido-o-higgins-CtsLggl6/
HTML是:
<li class=" active" style="display: block;"><span class="topleft_corner"></span><span class="topright_corner"></span><strong><span>Over/Under</span></strong></li>
我试过以下方法:
overunder=browser.find_element_by_link_text('Over/Under')
overunder=wait(browser, 5).until(EC.element_to_be_clickable((By.XPATH, "//span[contains(text(), 'Over/Under']")))
overunder=browser.findElement(By.xpath("//span[contains(text(), 'Over/Under']"))
所有这些后跟 overunder.click()
然而所有的结果都是NosuchElementException
。
如何点击这个项目?
我正在尝试访问和抓取此部分后面的 Over/Under 个网站。
当我检查了您使用 selenium 提供的 link 的 page_source 时,这就是我得到的您正在寻找的区域:
<li class="" style="display: block;"><a onmousedown="uid(5)._onClick();return false;" title="Over/Under" href=""><span>O/U</span></a></li>
我用过
browser.find_element_by_css_selector("a[title='Over/Under']").click()
这对我有用。
我复制了完整的 xpath,这对我有用:
browser.find_element_by_xpath("/html/body/div[1]/div/div[2]/div[6]/div[1]/div/div[1]/div[2]/div[1]/div[5]/div[1]/ul/li[5]/a").click()
我看到的是带有文本 Over/Under 的元素,而不是带有文本 O/U[= 的元素24=]
要单击文本为 save 的元素,您可以使用以下任一方法 :
使用css_selector
:
driver.find_element(By.CSS_SELECTOR, "a[title='Over/Under'] > span").click()
使用xpath
:
driver.find_element(By.XPATH, "//a[@title='Over/Under']/span[text()='O/U']").click()
理想情况下,要单击需要为 element_to_be_clickable()
引入 WebDriverWait 的元素,您可以使用以下任一方法 :
使用CSS_SELECTOR
:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "a[title='Over/Under'] > span"))).click()
使用XPATH
:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//a[@title='Over/Under']/span[text()='O/U']"))).click()
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
浏览器快照:
我正在尝试点击进入本网站的 Over/Under 部分: https://www.oddsportal.com/soccer/chile/primera-division/curico-unido-o-higgins-CtsLggl6/
HTML是:
<li class=" active" style="display: block;"><span class="topleft_corner"></span><span class="topright_corner"></span><strong><span>Over/Under</span></strong></li>
我试过以下方法:
overunder=browser.find_element_by_link_text('Over/Under')
overunder=wait(browser, 5).until(EC.element_to_be_clickable((By.XPATH, "//span[contains(text(), 'Over/Under']")))
overunder=browser.findElement(By.xpath("//span[contains(text(), 'Over/Under']"))
所有这些后跟 overunder.click()
然而所有的结果都是NosuchElementException
。
如何点击这个项目? 我正在尝试访问和抓取此部分后面的 Over/Under 个网站。
当我检查了您使用 selenium 提供的 link 的 page_source 时,这就是我得到的您正在寻找的区域:
<li class="" style="display: block;"><a onmousedown="uid(5)._onClick();return false;" title="Over/Under" href=""><span>O/U</span></a></li>
我用过
browser.find_element_by_css_selector("a[title='Over/Under']").click()
这对我有用。
我复制了完整的 xpath,这对我有用:
browser.find_element_by_xpath("/html/body/div[1]/div/div[2]/div[6]/div[1]/div/div[1]/div[2]/div[1]/div[5]/div[1]/ul/li[5]/a").click()
我看到的是带有文本 Over/Under 的元素,而不是带有文本 O/U[= 的元素24=]
要单击文本为 save 的元素,您可以使用以下任一方法
使用
css_selector
:driver.find_element(By.CSS_SELECTOR, "a[title='Over/Under'] > span").click()
使用
xpath
:driver.find_element(By.XPATH, "//a[@title='Over/Under']/span[text()='O/U']").click()
理想情况下,要单击需要为 element_to_be_clickable()
引入 WebDriverWait 的元素,您可以使用以下任一方法
使用
CSS_SELECTOR
:WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "a[title='Over/Under'] > span"))).click()
使用
XPATH
:WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//a[@title='Over/Under']/span[text()='O/U']"))).click()
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC
浏览器快照: