остановка селена после ввода - PullRequest
0 голосов
/ 26 октября 2018

Я новичок в программировании на Python и Selenium, но, думаю, я понял это, попытался создать некоторые примеры для себя, чтобы поучиться у них, у меня есть 2 вопроса. Прежде всего, по какой-то причине мой код останавливается после вводапо какой-то причине она не подходит для функции yalla (),

yallaurl = str(input('Your URL + ' + ""))
browser = webdriver.Chrome()
browser.get(yallaurl)
browser.maximize_window()
yalla()

Другое, а затем этот другой вопрос касается browser.find_element_by_xpath, поэтому после того, как я перехожу в html-файл и нажимаю Копировать xpath, я получаю что-токак это:

/html/body/table[2]/tbody/tr/td/form/table[4]/tbody/tr[2]/td/table/tbody/tr[2]/td[2]

Так как работает строка кода?это законно?

def yalla():
        sleep(2)
    count = len(browser.find_elements_by_class_name('flyingCart'))
    email = browser.find_element_by_xpath('/html/body/table[2]/tbody/tr/td/form/table[4]/tbody/tr[2]/td/table/tbody/tr[2]/td[2]')
    for x in range(2, count):
        itemdesc[x] = browser.find_element_by_xpath(
            "/html/body/table[2]/tbody/tr/td/form/table[1]/tbody/tr[2]/td[2]/table/tbody/tr[x]/td[2]/a[1]/text()")
        priceper[x] = browser.find_element_by_xpath(
            "/html/body/table[2]/tbody/tr/td/form/table[1]/tbody/tr[2]/td[2]/table/tbody/tr[x]/td[5]/text()")
        amount[x] = browser.find_element_by_xpath(
            "/html/body/table[2]/tbody/tr/td/form/table[1]/tbody/tr[2]/td[2]/table/tbody/tr[x]/td[6]")
    browser.navigate().to('https://www.greeninvoice.co.il/app/documents/new#type=100')
    checklogininvoice()

Ответы [ 2 ]

0 голосов
/ 26 октября 2018

Во-первых, этот код вводит в заблуждение:

yallaurl = str(input('Your URL + ' + ""))

Это практически эквивалентно:

yallaurl = input('Your URL: ')

Да, этот код верен:

browser.find_element_by_xpath('/html/body/table[2]/tbody/tr/td/form/table[4]/tbody/tr[2]/td/table/tbody/tr[2]/td[2]')

Пожалуйста, обратитесь к документам для правильного использования.Вот рекомендуемое использование этого метода:

from selenium.webdriver.common.by import By

driver.find_element(By.XPATH, '/html/body/table[2]/tbody/tr/td/form/table[4]/tbody/tr[2]/td/table/tbody/tr[2]/td[2]')

Этот код вернет объект выбранного вами элемента.Чтобы напечатать HTML самого элемента, это должно работать:

print(element.get_attribute('outerHTML'))

Для получения дополнительной информации об объектах страницы, пожалуйста, обратитесь к этой странице документации.


Поскольку вы не предоставили код для своей функции 'yalla', диагностировать проблему там сложно.

0 голосов
/ 26 октября 2018

Да, ваш код будет работать нормально и допустим, но не рекомендуется.Как описано, абсолютный путь работает нормально, но сломался бы, если бы HTML был изменен лишь незначительно

Ссылка: https://selenium -python.readthedocs.io / locating-elements.html

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