Не удается найти какой-либо элемент селена на какой-либо странице с питоном - PullRequest
0 голосов
/ 25 июня 2019

пытается создать какого-нибудь бота, который очищает веб-страницу и не может получить доступ к элементам на этой веб-странице любым известным мне способом.

что я делаю не так?:)

попытался получить этот элемент со всеми find_elemenet_by ... и ничем.

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait as wait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.keys import Keys

url = 'https://www.elal.com/he/Pages/Bid2Fly.aspx#bidflyer/auctions/'
driver = webdriver.Chrome
driver.get(url)
wait(driver, 20).until(EC.presence_of_element_located((By.CSS_SELECTOR, "a.bid-button")))

print(driver.find_elements_by_class_name("half").text)

, пытаясь получить ссылки в качестве начала, а затем очистить данные.

Ответы [ 2 ]

2 голосов
/ 26 июня 2019
  1. Все содержимое веб-сайта, которое вы пытаетесь автоматизировать, находится в iframes , поэтому вам нужно будет вызвать функцию WebDriver.switch_to () вчтобы изменить контекст на требуемый iframe перед попыткой найти элементы

    enter image description here

    driver.switch_to.frame("frame")
    
  2. WebDriver.find_elements_by_classname возвращает Список веб-элементов, более того, элементы не имеют текстового свойства, поэтому вы должны:

    Пример кода (я изменил ваш локатор CSS на XPath для лучшей читаемости и производительности)

    url = 'https://www.elal.com/he/Pages/Bid2Fly.aspx#bidflyer/auctions/'
    driver.get(url)
    driver.switch_to.frame("frame")
    wait(driver, 20).until(EC.presence_of_element_located((By.CSS_SELECTOR, "a.bid-button")))
    for element in driver.find_elements_by_xpath("//div[@class='half']"):
        print(element.get_attribute("innerText"))
    
    driver.quit()
    

    enter image description here

0 голосов
/ 25 июня 2019

Вы пытались сохранить элементы в переменной?

лайк- var=driver.find_elements_by_class_name("div.half")

Я думаю, что так и должно быть, если имя класса такое, как вы его описали, и оно не является составным.

...