Получить значение из поля вывода с помощью Selenium (Python) - PullRequest
2 голосов
/ 22 января 2020

Я пытаюсь извлечь текст, сгенерированный в текстовом поле, на основе значений, введенных в другое текстовое поле. Я посмотрел в элементе inspect, и в нем нет никаких признаков значений, а в «Value» ничего нет, хотя поле заполнено.

Я использую селен в Python, чтобы попытаться выполнить это. В настоящее время я работаю только с 1, но я буду настраивать al oop для выполнения тысяч, поэтому я нуждаюсь в этом автомате.

Ниже приведен код на странице ( Ordinance Survey Ireland Сайт )

<td width="25%" class="form">Latitude:</td>
<td class="form">
   <input type="text" name="GeodeticLatitude" type="number" size="10" maxlength="2" value="">
   deg
   <input type="text" name="GeodeticLatitudeMin" size="2" maxlength="2" value="0">
   min
   <input type="text" name="GeodeticLatitudeSec" size="8" maxlength="8" value="0">
   sec
</td>

Ниже приведен код, с которым я сейчас работаю, чтобы попытаться извлечь значения

browser = webdriver.Chrome()

browser.get("https://gnss.osi.ie/new-converter/")

def find():
    python_button = browser.find_elements_by_xpath("//input[@name='IrishGridEasting']")[0]
    python_button.send_keys("316600")
    python_button = browser.find_elements_by_xpath("//input[@name='IrishGridNorthing']")[0]
    python_button.send_keys("229500")
    python_button = browser.find_elements_by_xpath("//td[@class='form']/button[@type='button']")[1]
    python_button.click()

    latDeg = browser.find_elements_by_xpath("//input[@name='GeodeticLatitude']")
    print(latDeg)

Я пытался добавить такие параметры, как .text, .getText (), .getAttribute и .get_attribute, но они не возвращают значение текстового поля

Затем на снимке экрана ниже показано, что я пытаюсь получить.

Красное поле - это число, которое я вставляю, зеленое поле - это то, что я хочу извлечь.

Screenshot of webpage

1 Ответ

3 голосов
/ 22 января 2020

Вы должны указать time.sleep(1), так как значение, генерирующее ваш скрипт, не может синхронизироваться c this.Try WebDriverWait и используйте get_attribute('value') для получения значения из полей ввода.

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
import time
driver=webdriver.Chrome()
driver.get('https://gnss.osi.ie/new-converter/')
WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.XPATH,"//input[@name='IrishGridEasting']"))).send_keys("316600")
WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.XPATH,"//input[@name='IrishGridNorthing']"))).send_keys("229500")
WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.XPATH,"//tr[contains(.,'Irish Grid Co-ordinates:')]//button[text()='Convert']"))).click()
time.sleep(1)
print(WebDriverWait(driver,10).until(EC.visibility_of_element_located((By.CSS_SELECTOR,"input[name='GeodeticLatitude'][value]"))).get_attribute('value'))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...