Невозможно найти элементы действительно в боковой панели прокрутки с селеном и питоном - PullRequest
0 голосов
/ 21 мая 2019

Я пытаюсь повысить свой профессионализм в Selenium с компанией действительно.com.Я выбрал эту веб-страницу, потому что она имеет динамический JS-контент, превосходящий то, что я знаю, как работать с другими опциями веб-очистки, такими как запросы и urllib.

Действительно, имеет главную веб-страницу и миниатюрное прокручиваемое меню, которое заполняется наПраво, когда нажата ссылка на конкретное задание (на главной странице). Я могу успешно использовать link.click (), однако я не могу использовать отображаемый контент на мини-странице.Я отключил голову через комментарий при устранении неполадок, но не смог понять, что я делаю не так ...


import selenium
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

chrome_options = Options()
#chrome_options.add_argument("--headless")

driverLoc = '/Users/jdmoore7/Downloads/chromedriver-2'
os.environ['webdriver.chrome.driver'] = driverLoc

driver = webdriver.Chrome(driverLoc, options=chrome_options)
driver.get('https://www.indeed.com/jobs?q=&l=Chicago,%20IL&advn=')

link = driver.find_element_by_id("sja0")
link.click()

# Everything works up to this point. Selenium cannot find the following tag...but I've visually verified that it exists.

element = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, 'vjs-desc')))
details = driver.find_element(By.ID, 'vjs-desc')

print(details)

Сначала я думал, что это будет связано с iframes, но пока что нетне нашел ничего убедительного

Ошибка:

NoSuchElementException: Message: no such element: Unable to locate element: {"method":"id","selector":"vjs-desc"}

1 Ответ

0 голосов
/ 23 мая 2019

Ваш идентификатор sja0 не имеет большого смысла, так как выглядит как нечто, генерируемое автоматически. Если вы хотите нажать на ссылку, вы должны заменить эту строку:

link = driver.find_element_by_id("sja0")

с выражением XPath для поиска ссылки (ов) в элементе div с классом из title как:

links = driver.find_elements_by_xpath("//div[@class='title']/a")

enter image description here

в дальнейшем вы можете выбрать ссылку на ваш выбор или случайную ссылку

randomLink = random.choice(links)
print("Random link text: " + randomLink.text)
randomLink.click()

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...