更改新URL的Selenium驱动程序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了更改新URL的Selenium驱动程序相关的知识,希望对你有一定的参考价值。

我使用Selenium导航到具有登录名/密码的URL(即URL_1),并提供了登录凭据。我已登录,URL(即URL_2)已按预期更改。我不知道如何导航URL_2,因为驱动程序仍然引用URL_1。

提前感谢。

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

user_name = 'xyz'
password = 'xyz'

def login_process():
    driver = webdriver.Firefox()
    driver.get("URL_1") 
    #successfully navigated to URL_1

    elem = driver.find_element_by_name("username")
    elem.clear()
    elem.send_keys(user_name)

    elem = driver.find_element_by_name("password")
    elem.clear()
    elem.send_keys(password)
    driver.find_element_by_id("submit").click()
    #successfully entered URL_2 

def query():
    HOW DO I CHANGE THE DRIVER TO URL_2?

    #elem = driver.find_element_by_class_name(ticker_box) #this doesn't work, references URL_1 driver
    #elem.clear()
    #elem.send_keys('xyz')
答案

代替具有独立的功能,创建类,将驱动程序实例作为实例变量。然后,使用self.driver.get()导航到其他URL:

class MyTest(object):
    def __init__(self):
        self.driver = webdriver.Firefox()

    def login_process(self):
        self.driver.get("URL_1") 
        #successfully navigated to URL_1

        elem = self.driver.find_element_by_name("username")
        elem.clear()
        elem.send_keys(user_name)

        elem = self.driver.find_element_by_name("password")
        elem.clear()
        elem.send_keys(password)
        self.driver.find_element_by_id("submit").click()
        #successfully entered URL_2 

    def query(self):
        self.driver.get("URL2")
        # do smth

test = MyTest()
test.login_process()
test.query()
另一答案

如果要在新页面上执行某些操作,则导航到新页面后>

newURl = driver.window_handles [0]

driver.switch_to.window(newURl)

完成此操作后,您可以在新的url中执行某些操作,而不会收到“没有此类元素异常”

另一答案

首先您可以将url变量分配为全局变量:

以上是关于更改新URL的Selenium驱动程序的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Selenium 打开带有哈希的 URL?

python selenium片段+网络驱动程序

小程序各种功能代码片段整理---持续更新

如何使用 Python 和 Selenium 在 Chrome 中打开具有不同 URL 的新标签页? [复制]

在代码中更改服务参考 URL

523selenium多窗口处理