在selenium中测试字符串vs current_url

时间:2016-12-12 04:09:08

标签: python selenium selenium-webdriver webdriver

使用Python 3.4Selenium

我试图测试当前网页与字符串。例如:

while(webdriver.current_url == "https://www.youtube.com/"):
         print("sleep")
         time.sleep(5)

然而,这不起作用。我已经尝试打印出链接,只是将其复制并粘贴到我的支票的字符串部分,但这也不起作用。

非常感谢任何帮助。

我的猜测是webdriver.current_url没有返回字符串,但是我已经将它封装在python中的str()中,但仍然无法正常工作。我还尝试通过执行current_url等来current_url[1:-1]更小,但没有帮助,所以我不确定我还能尝试哪些其他事情。

3 个答案:

答案 0 :(得分:1)

我尝试使用python 3.4,您分享的代码正在为我工​​作。

from selenium import webdriver
import time

driver = webdriver.Firefox()
driver.get("https://www.youtube.com/")
time.sleep(5)
print(driver.current_url, type(driver.current_url), type("https://www.youtube.com/"))
while(driver.current_url == "https://www.youtube.com/"):
    print("sleep")
    time.sleep(5)

while循环之前添加以下行以进行调试:

print webdriver.current_url, type(webdriver.current_url) # prints types as 'unicode' for me, but still code is working fine. tried with python 2.7
while(webdriver.current_url == "https://www.youtube.com/"):
     print("sleep")
     time.sleep(5)

建议检查webdriver.current_url

返回的值

答案 1 :(得分:0)

YouTube可能会在导航到网址后自动删除跟踪/或自动添加查询字符串参数。尝试:

while('https://www.youtube.com' in webdriver.current_url):

答案 2 :(得分:0)

webdriver是您应该导入的python模块的名称:from selenium import webdriver。因此,它甚至不具有current_url属性。

你的意思是这样吗?

from selenium import webdriver

driver = webdriver.Chrome()
driver.get('https://www.youtube.com/')
if driver.current_url == "https://www.youtube.com/":
    print('look, they are equal')

(注意我从我创建的current_url实例中获取webdriver.Chrome的值