Как предотвратить добавление Selenium Webdriver двойного sla * sh в URL-адресе driver.get () в Python - PullRequest
0 голосов
/ 01 апреля 2020

Я использую Selenium WebDriver, чтобы получить внутреннюю корпоративную веб-страницу, которая является формой поиска. Мой код успешно откроет браузер и откроет целевую страницу, но в URL-адресе присутствует нежелательный двойной знак sh, который влияет на последующее поведение формы поиска.

Вместо отображения 'http://example.web.company.com/directory/subdirectory/target_page.cfm' я получаю: 'http://example.web.company.com//directory/subdirectory/target_page.cfm'

Примечание double sla sh after ".com ». Кто-нибудь знает, как / почему вставляется дополнительный sla sh и как я могу его предотвратить?

Это несколько сложно, потому что мне нужно выполнить внутренний вход в систему, прежде чем браузер откроет страницу. Он перенаправляет на логин, заполняет подсказки, а затем приведенный ниже код успешно загрузит запрошенную страницу. Он просто вызывает версию double sla sh.

import getpass
import requests, lxml.html 
from selenium import webdriver
from selenium.webdriver.common.keys import Keys

# Get user input credentials
user = input('Enter ID: ')
password = getpass.getpass('Password: ')

# Driver
driver = webdriver.Chrome(executable_path=r'C:\Drivers\Chromedriver\chromedriver.exe') 

# Target web page
driver.get('http://example.web.company.com/directory/subdirectory/target_page.cfm')

# Navigate Logon Page 
elem = driver.find_element_by_id('ID')
elem.send_keys(user)
elem = driver.find_element_by_id('PASSWORD')
elem.send_keys(password)
elem = driver.find_element_by_id('Submit')
elem.click()  

Если затем я попытаюсь выполнить код для поиска чего-либо с помощью веб-формы, версия url double sla sh успешно отобразит список результатов для частично подобранного поискового термина (нормальное поведение). Но если я ввожу точный (действительный) поисковый термин, я получаю сообщение об ошибке, которое, как мне кажется, связано с относительными ссылками. Но я не контролирую эти страницы, я всего лишь пользователь.

# Search routine from page returned above
item = input('SEARCH TERM: ')
elem = driver.find_element_by_name('search_name')
elem.send_keys(item)
elem.send_keys(Keys.RETURN)

Этот сайт предоставил некоторые сведения об одиночных и двойных URL-адресах sh и относительных ссылках: https://sitebulb.com/hints/internal/url-contains-a-double-slash/

Эти потоки stackoverflow затрагивают webdriver и driver.get (), но я не смог найти ответ на вопрос: откуда берется дополнительный sla sh и как предотвратить это?

1 Ответ

0 голосов
/ 08 апреля 2020

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

Я не могу заставить свой код работать с использованием исходного целевого поискового сайта (потому что он только пытается найти путь к каталогу, который не будет работать с автоматизация). Но я могу использовать другой циклический код для связи с целевыми результатами, используя дерево каталогов, которое работает.

Я точно не знаю, почему автоматизация не примет тот же путь, который работает вручную, но у меня есть последовательный обходной путь. Я считаю, что проблема с двойным sla sh не актуальна.

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