2016-11-23 2 views
0

Ich versuche, Selenium in Verbindung mit BeautifulSoup zu verwenden. Um genauer zu sein, versuche ich, den Link NCAA Division I aus dem Dropdown-Menü here zu klicken (anfangs heißt es Top 25).Selenium Python kann nicht finden_element_by_link_text

Der HTML-Tag für den Link wie folgt aussieht:

<li><a href="#" data-type="conference" data-week="null-null-null" data-group="50">NCAA Division I</a></li> 

Für mich ist es gerade nach vorn scheint: driver.find_element_by_link_text('NCAA Division I').click()

Ist das, weil href="#" oder vielleicht, weil die <a> Tag in einem <li> Tag eingebettet ?

Hier ist, was passiert:

(Pdb) driver.find_element_by_link_text('NCAA Division I').click() 
*** NoSuchElementException: Message: no such element: Unable to locate element: {"method":"link text","selector":"NCAA Division I"} 
    (Session info: chrome=54.0.2840.100) 
    (Driver info: chromedriver=2.25.426924 (649f9b868f6783ec9de71c123212b908bf3b232e),platform=Linux 4.4.0-45-generic x86_64) 

Voll Code:

import numpy as np 
import requests 
from bs4 import BeautifulSoup 
import re 
import datetime 
import os 
from selenium import webdriver 

scores_link = "http://www.espn.com/mens-college-basketball/scoreboard/_/date/20161122" 
r = requests.get(scores_link) 

driver = webdriver.Chrome() 
driver.get(scores_link) 
driver.find_element_by_link_text('NCAA Division I').click() 
soup = BeautifulSoup(driver.page_source) 

Antwort

0

Da die "NCAA Division I" wird nur kommen, nachdem die Maus schweben, so haben wir ActionChains von Selen verwenden (http://selenium-python.readthedocs.io/api.html#module-selenium.webdriver.common.action_chains)

diesen Code versuchen, wird es funktionieren:

from selenium import webdriver 
from selenium.webdriver.common.action_chains import ActionChains 

driver = webdriver.Chrome() 
driver.maximize_window() 
driver.get('http://www.espn.com/mens-college-basketball/scoreboard/_/date/20161122') 

el2=driver.find_element_by_xpath("//header[@class='automated-header']//button[.='Top 25']") 
action = ActionChains(driver) 
action.move_to_element(el2).click().perform() 

driver.find_element_by_link_text('NCAA Division I').click() 
Verwandte Themen