我正在使用SeleniumWebDriver获取一个内部公司网页,这是一个搜索表单。 我的代码将成功打开浏览器并拉起目标页面,但url中存在不需要的双斜杠,这会影响后续的搜索表单行为
而不是显示“http://example.web.company.com/directory/subdirectory/target_page.cfm” 我得到:“http://example.web.company.com//directory/subdirectory/target_page.cfm”
注意“.com”后面的双斜杠。是否有人知道如何/为什么插入额外的斜杠,以及我如何防止它
这有点复杂,因为我必须在浏览器打开页面之前执行内部登录。它重定向到登录,填写提示,然后下面的代码将成功加载请求的页面。它只是显示了双斜杠版本
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()
如果我随后尝试执行代码来使用web表单搜索某些内容,则双斜杠url版本将成功显示部分匹配搜索词的结果列表(正常行为)。但如果我输入一个精确(有效)的搜索词,我会得到一个错误,我想这似乎与相对链接有关。但我无法控制这些页面,我只是一个用户
# 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以及相关链接的背景资料:https://sitebulb.com/hints/internal/url-contains-a-double-slash/
这些stackoverflow线程涉及webdriver和driver.get(),但我无法找到问题的答案:额外的斜杠从何而来,如何防止它
我最终了解到,在手动工作的同一目录路径下,自动化无法访问目标结果页。但是还有另一个目录树,它可以与自动化一起工作,并且两者都涉及同一个数据库
我无法使用原始目标搜索站点使我的代码正常工作(因为它只尝试无法自动工作的目录路径)。但是我可以使用其他可循环的代码,使用确实有效的目录树链接到目标结果
我不知道为什么自动化不接受手动工作的相同路径,但我有一个一致的解决方法。我认为双斜杠的问题与此无关
相关问题 更多 >
编程相关推荐