首页 > 解决方案 > Selenium Webdriver (Python):如何为“send.key”行设置页面对象?

问题描述

这里是硒的新手。我正在尝试将这行代码优化为页面对象文件。这是在搜索字段框中键入“USA”的实际脚本:

driver.find_element_by_xpath("//input[@id='country']").send_keys("USA")

我这样做的方式一直给我一个错误,所以我不确定我做错了什么(见下文):

实际测试用例文件:

from pageObjects.Confirm_page import ConfirmPage

class TestOne(BaseClass):

    def test_endtoend2(self):
        confirmPage = ConfirmPage(self.driver)

   
    confirmPage.getCountryName().send_keys("USA")

页面对象文件

from selenium.webdriver.common.by import By


class ConfirmPage:
    def __init__(self, driver):
        self.driver = driver

    typeCountry = (By.XPATH, "//input[@id='country']")

    def getCountryName(self):
        self.driver.find_elements(*ConfirmPage.typeCountry)

错误信息:

>       confirmPage.getCountryName().send_keys("USA")
E       AttributeError: 'NoneType' object has no attribute 'send_keys'

标签: pythonpython-3.xseleniumselenium-webdriver

解决方案


错误说 nonetype 没有 send_keys ,因为 getcountryname() 没有返回任何东西,你应该在那里返回一些东西并使用 find_element 而不是 elements

from selenium.webdriver.common.by import By


class ConfirmPage:
    def __init__(self, driver):
        self.driver = driver

    typeCountry = (By.XPATH, "//input[@id='country']")

    def getCountryName(self):
        return self.driver.find_element(*ConfirmPage.typeCountry)

推荐阅读