Поиск элемента с помощью Python Selenium - PullRequest
0 голосов
/ 04 марта 2019

Я новичок в Selenium, и мне интересно, как найти элемент, выделенный на этом изображении:

HTML code for object

Вот что яя пробовал, но я получаю сообщение об ошибке ниже:

create_a_detector_btn = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR,"..)))

неизвестная ошибка: не может сфокусировать элемент

Ответы [ 2 ]

0 голосов
/ 05 марта 2019

Пожалуйста, обратитесь к документации по адресу: https://selenium -python.readthedocs.io / locating-elements.html

Мне нравится добавлять ожидаемое условие (EC), предоставляемое в качестве аргументафункции WebDriverWait.Until, чтобы код приостанавливал работу и эффективно давал странице определенное время для загрузки элемента, который может отсутствовать при начальной загрузке.

Вот пример, который я использовал впрошлое:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
from selenium.common.exceptions import NoSuchElementException, TimeoutException

TIME_TIMEOUT = 10 # Ten-second timeout default

def eprint(*args, **kwargs):
    """ Prints an error message to the user in the console (prints to sys.stderr), passes
    all provided args and kwargs along to the function as usual. Be aware that the 'file' argument
    to print can be overridden if supplied again in kwargs.
    """
    print(*args, file=sys.stderr, **kwargs)

driver = webdriver.Chrome()
driver.get("https://web.site/page")

try:
    wait = WebDriverWait(driver, TIME_TIMEOUT).until(EC.presence_of_element_located((By.CSS_SELECTOR, ".Select-placeholder")))

except NoSuchElementException as ex:
    eprint(ex.msg())

except TimeoutException as toex:
    eprint(toex.msg)
0 голосов
/ 05 марта 2019

Вот очень простой пример поиска элемента с помощью CSS Selector.

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

driver = webdriver.Chrome() 
driver.get("URLHERE")
find_item = driver.find_element_by_css_selector("CSS SELECTOR HERE")

Вы также можете найти по пути x

webdriver.find_element_by_xpath('RELATIVE X PATH HERE')

В вашем случае кажется, что вы хотите подождать элемента, поэтому вы можете сделать это

element = WebDriverWait(self.driver, 10).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "element_css")))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...