Python 硒不是';t返回当前url

Python 硒不是';t返回当前url,python,selenium,Python,Selenium,我正在设置一个python脚本,以便转到一家航运公司的网站,输入一个跟踪号,并返回发货和交货日期,而selenium当前的url方法遇到了问题。我的代码打开了初始浏览器窗口,输入了跟踪号,并转到“发货状态”页面,但在结果页面上找不到表项。起初我以为这是我查找表项的方式,但我发现结果页面url仍然与我开始时的初始url相同。我甚至添加了一个隐式等待时间,以确保页面已经加载,并且仍然得到相同的结果。下面是我的代码的样子: 我认为在结果页面上查找table元素仍然存在问题,但在我确定是否搜索了正确的u

我正在设置一个python脚本,以便转到一家航运公司的网站,输入一个跟踪号,并返回发货和交货日期,而selenium当前的url方法遇到了问题。我的代码打开了初始浏览器窗口,输入了跟踪号,并转到“发货状态”页面,但在结果页面上找不到表项。起初我以为这是我查找表项的方式,但我发现结果页面url仍然与我开始时的初始url相同。我甚至添加了一个隐式等待时间,以确保页面已经加载,并且仍然得到相同的结果。下面是我的代码的样子:

我认为在结果页面上查找table元素仍然存在问题,但在我确定是否搜索了正确的url之前,我无法确定,因此我需要首先通过该步骤。任何帮助都将不胜感激

谢谢 马克斯


该网站将打开另一个窗口。你必须切换到那个窗口。他们不止一次地使用表id标记。这将有助于:

driver = webdriver.Chrome()
driver.get('http://www.dovelogistics.com/track-shipment/')
elem = driver.find_element_by_name("txtInputNo")
elem.clear()
elem.send_keys("224893")
elem.send_keys(Keys.RETURN)
assert "No results found." not in driver.page_source

driver.switch_to.window(driver.window_handles[1])
print(driver.current_url)

elem = driver.find_elements_by_id("Table1")
print (elem)

driver.close()

你必须处理他们嵌套的表格和重复的id标签。

该网站将打开另一个窗口。你必须切换到那个窗口。他们不止一次地使用表id标记。这将有助于:

driver = webdriver.Chrome()
driver.get('http://www.dovelogistics.com/track-shipment/')
elem = driver.find_element_by_name("txtInputNo")
elem.clear()
elem.send_keys("224893")
elem.send_keys(Keys.RETURN)
assert "No results found." not in driver.page_source

driver.switch_to.window(driver.window_handles[1])
print(driver.current_url)

elem = driver.find_elements_by_id("Table1")
print (elem)

driver.close()

您必须处理它们的嵌套表和重复的id标记。

您应该接受Jens Dibbern解决方案,但只想指出,一旦您获得url,您还可以使用pandas拉取该表进行解析:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
import pandas as pd


driver = webdriver.Chrome()
driver.get("http://www.dovelogistics.com/track-shipment/")

elem = driver.find_element_by_name("txtInputNo")
elem.clear()
elem.send_keys("224893")
elem.send_keys(Keys.RETURN)
assert "No results found." not in driver.page_source

driver.implicitly_wait(5)

driver.switch_to.window(driver.window_handles[1])
resultsPage = driver.current_url
driver.get(resultsPage)

html = driver.page_source

tables = pd.read_html(html)
table = tables[5]

driver.close()
输出:

print (table)
                        0                                                  1
0       Status Updated On                                               Note
1    12/4/2018 1:07:00 PM                  Shipment Status changed to: Rated
2    12/4/2018 1:07:00 PM  Signed for By: Delivered at KWA 1:07:00 PM 12/...
3    12/4/2018 9:37:43 AM                     Email Status Notification Sent
4   12/2/2018 11:50:00 AM      Shipment Status changed to: Shipment Departed
5    12/1/2018 2:12:00 PM       Shipment Status changed to: Shipment Arrived
6   12/1/2018 10:39:00 AM      Shipment Status changed to: Shipment Departed
7    12/1/2018 9:28:00 AM       Shipment Status changed to: Shipment Arrived
8   11/30/2018 2:53:55 PM  Shipment Status changed to: Shipment Departed ...
9   11/28/2018 8:42:23 PM  Shipment Status changed to: On-Hand At Origin ...
10  11/28/2018 5:53:47 PM  Shipment Status changed to: Dispatched for Pickup

您应该接受Jens Dibbern解决方案,但只想指出,一旦您获得url传入,您还可以使用pandas拉取该表进行解析:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
import pandas as pd


driver = webdriver.Chrome()
driver.get("http://www.dovelogistics.com/track-shipment/")

elem = driver.find_element_by_name("txtInputNo")
elem.clear()
elem.send_keys("224893")
elem.send_keys(Keys.RETURN)
assert "No results found." not in driver.page_source

driver.implicitly_wait(5)

driver.switch_to.window(driver.window_handles[1])
resultsPage = driver.current_url
driver.get(resultsPage)

html = driver.page_source

tables = pd.read_html(html)
table = tables[5]

driver.close()
输出:

print (table)
                        0                                                  1
0       Status Updated On                                               Note
1    12/4/2018 1:07:00 PM                  Shipment Status changed to: Rated
2    12/4/2018 1:07:00 PM  Signed for By: Delivered at KWA 1:07:00 PM 12/...
3    12/4/2018 9:37:43 AM                     Email Status Notification Sent
4   12/2/2018 11:50:00 AM      Shipment Status changed to: Shipment Departed
5    12/1/2018 2:12:00 PM       Shipment Status changed to: Shipment Arrived
6   12/1/2018 10:39:00 AM      Shipment Status changed to: Shipment Departed
7    12/1/2018 9:28:00 AM       Shipment Status changed to: Shipment Arrived
8   11/30/2018 2:53:55 PM  Shipment Status changed to: Shipment Departed ...
9   11/28/2018 8:42:23 PM  Shipment Status changed to: On-Hand At Origin ...
10  11/28/2018 5:53:47 PM  Shipment Status changed to: Dispatched for Pickup

您是否可以删除额外的代码,并留下一个示例来准确显示您看到的内容。你的问题也很不清楚。你也有换行符,这会使代码无法命名,因为你可以删除额外的代码,并留下一个例子,准确地显示你所看到的。你的问题也很不清楚。你也有换行符,这使得代码很难命名为Istanks。我试试看。我不知道需要换窗户。非常感谢。我试试看。我不知道有必要换窗户。太棒了,非常感谢。这将在下一步帮助我!太棒了,非常感谢。这将在下一步帮助我!