如何防止Selenium Webdriver在Python中的driver.get()url中添加双斜杠

2024-03-29 05:01:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用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(),但我无法找到问题的答案:额外的斜杠从何而来,如何防止它


Tags: importcomsendweb表单bydriverpage
1条回答
网友
1楼 · 发布于 2024-03-29 05:01:15

我最终了解到,在手动工作的同一目录路径下,自动化无法访问目标结果页。但是还有另一个目录树,它可以与自动化一起工作,并且两者都涉及同一个数据库

我无法使用原始目标搜索站点使我的代码正常工作(因为它只尝试无法自动工作的目录路径)。但是我可以使用其他可循环的代码,使用确实有效的目录树链接到目标结果

我不知道为什么自动化不接受手动工作的相同路径,但我有一个一致的解决方法。我认为双斜杠的问题与此无关

相关问题 更多 >