Python 为什么通过采用3个位置参数的xpath()查找元素?
*args以元组形式解包定位器。但在我的例子中,我只给出了两个参数,但它包含三个参数。需要帮助才能理解 我是使用python开发selenium的新手,并在github中使用了一些代码, 但这是一个错误 TypeError:Python 为什么通过采用3个位置参数的xpath()查找元素?,python,selenium,selenium-webdriver,Python,Selenium,Selenium Webdriver,*args以元组形式解包定位器。但在我的例子中,我只给出了两个参数,但它包含三个参数。需要帮助才能理解 我是使用python开发selenium的新手,并在github中使用了一些代码, 但这是一个错误 TypeError:find\u element\u by\u xpath()接受2个位置参数,但给出了3个 locator.py from selenium.webdriver.common.by import By class elements(object): Customer
find\u element\u by\u xpath()
接受2个位置参数,但给出了3个
locator.py
from selenium.webdriver.common.by import By
class elements(object):
Customer = (By.XPATH, "//button[contains(text(),'Customer')]")
base.py
from selenium import webdriver
from selenium.webdriver.common.by import By
class Page(object):
def __init__(self,driver,url=None):
self.url = url
self.driver = driver
def find_element_with_click(self,*locator):
self.driver.find_element_by_xpath(*locator).click()
pages.py
from selenium import webdriver
from base import Page
from locator import *
class CustomerCreation(Page):
def __init__(self, driver):
self.locator = elements
super().__init__(driver)
def create_customer(self):
self.driver.find_element_with_click(*self.locator.Customer)
testPages.py
import unittest
from selenium import webdriver
from pages import *
from locators import *
from selenium.webdriver.common.by import By
class TestPages(unittest.TestCase):
@classmethod
def setUpClass(cls):
cls.driver = webdriver.Chrome('C:\ChromeDriver\chromedriver')
cls.driver.get("#server")
def test_tes_cust(self):
page = CustomerCreation(self.driver)
res_page = page.create_customer() #Getting issue at this stage
@classmethod
def tearDownClass(cls):
cls.driver.close()
if __name__ == "__main__":
suite = unittest.TestLoader().loadTestsFromTestCase(TestPages)
unittest.TextTestRunner(verbosity=2).run(suite)
错误日志:
测试用户(main.TestPages)。。。错误
======================================================================
错误:测试用户(main.TestPages)
----------------------------------------------------------------------
回溯(最近一次呼叫最后一次):
test_tes_cust中第28行的文件“testPages.py”
res_page=page.create_customer()
文件“C:\Users####\PycharmProjects\basics\pages.py”,第35行,在创建客户
self.find_元素,单击(*self.locator.Customer)
文件“C:\Users####\PycharmProjects\basics\base.py”,第21行,在find_元素中单击
self.driver.find\u元素\u by_xpath(*locator)。单击()
TypeError:find_element_by_xpath()接受2个位置参数,但给出了3个
locator.py
from selenium.webdriver.common.by import By
class elements(object):
Customer = (By.XPATH, "//button[contains(text(),'Customer')]")
base.py
from selenium import webdriver
from selenium.webdriver.common.by import By
class Page(object):
def __init__(self,driver,url=None):
self.url = url
self.driver = driver
def find_element_with_click(self,*locator):
self.driver.find_element_by_xpath(*locator).click()
pages.py
from selenium import webdriver
from base import Page
from locator import *
class CustomerCreation(Page):
def __init__(self, driver):
self.locator = elements
super().__init__(driver)
def create_customer(self):
self.driver.find_element_with_click(*self.locator.Customer)
testPages.py
import unittest
from selenium import webdriver
from pages import *
from locators import *
from selenium.webdriver.common.by import By
class TestPages(unittest.TestCase):
@classmethod
def setUpClass(cls):
cls.driver = webdriver.Chrome('C:\ChromeDriver\chromedriver')
cls.driver.get("#server")
def test_tes_cust(self):
page = CustomerCreation(self.driver)
res_page = page.create_customer() #Getting issue at this stage
@classmethod
def tearDownClass(cls):
cls.driver.close()
if __name__ == "__main__":
suite = unittest.TestLoader().loadTestsFromTestCase(TestPages)
unittest.TextTestRunner(verbosity=2).run(suite)
你通过了一个额外的论点。你的论点是:
self
By.XPATH
“//按钮[包含(text(),'Customer')]”
find\u element
方法的内容。而find\u element\u by\u xpath
应该只接受两个参数:
self
“//按钮[包含(text(),'Customer')]”
def find_element_with_click(self,*locator):
self.driver.find_element(*locator).click()
或者您需要将客户
修改为:
Customer = "//button[contains(text(),'Customer')]"
及