如何防止 Selenium Webdriver 在 driver.get() url 中添加双斜线 Python
How to prevent Selenium Webdriver adding double slash in driver.get() url in Python
我正在使用 Selenium WebDriver 获取公司内部网页,这是一个搜索表单。
我的代码将成功打开浏览器并拉出目标页面,但 url 中有一个不需要的双斜杠,它会影响后续的搜索表单行为。
而不是显示“http://example.web.company.com/directory/subdirectory/target_page.cfm”
我得到:'http://example.web.company.com//directory/subdirectory/target_page.cfm'
注意“.com”后的双斜杠。有谁知道 how/why 插入了额外的斜杠,我该如何防止它?
这有点复杂,因为我必须在浏览器打开页面之前执行内部登录。它重定向到登录,填写提示,然后下面的代码将成功加载请求的页面。它只是调出双斜杠版本。
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)
此网站提供了一些关于单斜线和双斜线 urls 和相对链接的背景:https://sitebulb.com/hints/internal/url-contains-a-double-slash/
这些 Whosebug 线程涉及 webdriver 和 driver.get(),但我无法找到问题的答案:多余的斜线从何而来以及如何防止它?
- Selenium driver.get() modifying URL
我最终了解到目标结果页面无法在手动工作的相同目录路径下通过自动化访问。但是还有另一个目录树可以自动化工作,并且都涉及同一个数据库。
我无法使用原始目标搜索站点使我的代码工作(因为它只尝试无法使用自动化的目录路径)。但是我可以使用其他可循环代码 link 使用确实有效的目录树来定位结果。
我不知道为什么自动化不接受手动工作的相同路径,但我有一个一致的解决方法。我认为双斜杠的问题无关紧要。
我正在使用 Selenium WebDriver 获取公司内部网页,这是一个搜索表单。 我的代码将成功打开浏览器并拉出目标页面,但 url 中有一个不需要的双斜杠,它会影响后续的搜索表单行为。
而不是显示“http://example.web.company.com/directory/subdirectory/target_page.cfm” 我得到:'http://example.web.company.com//directory/subdirectory/target_page.cfm'
注意“.com”后的双斜杠。有谁知道 how/why 插入了额外的斜杠,我该如何防止它?
这有点复杂,因为我必须在浏览器打开页面之前执行内部登录。它重定向到登录,填写提示,然后下面的代码将成功加载请求的页面。它只是调出双斜杠版本。
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)
此网站提供了一些关于单斜线和双斜线 urls 和相对链接的背景:https://sitebulb.com/hints/internal/url-contains-a-double-slash/
这些 Whosebug 线程涉及 webdriver 和 driver.get(),但我无法找到问题的答案:多余的斜线从何而来以及如何防止它?
- Selenium driver.get() modifying URL
我最终了解到目标结果页面无法在手动工作的相同目录路径下通过自动化访问。但是还有另一个目录树可以自动化工作,并且都涉及同一个数据库。
我无法使用原始目标搜索站点使我的代码工作(因为它只尝试无法使用自动化的目录路径)。但是我可以使用其他可循环代码 link 使用确实有效的目录树来定位结果。
我不知道为什么自动化不接受手动工作的相同路径,但我有一个一致的解决方法。我认为双斜杠的问题无关紧要。