我写了一个代码来测试python中的selenium页面,代码很好用,但是现在我想重写得更好。
我已经创建了一个locators.py
文件,如以下文档所述:selenium python binding - page objects。
对于简单的定位符来说,这很简单。这是我到目前为止所做的:
from selenium.webdriver.common.by import By
class PhotoHomePageLocators(object):
"""A class for photographer home page locators. All photographer interface home page locators should come here"""
add_new_project_btn = (By.CLASS_NAME, 'addProject')
view_all_projects_btn = (By.CLASS_NAME, 'viewAllProjects')
class NameCoverPageLocators(object):
"""A class for name and cover home page locators. All name and cover page locators should come here"""
project_name_txt_box = (By.XPATH, '//*[@id="rform_pt2_0"]')
client_name_txt_box = (By.XPATH, '//*[@id="rform_pt2_1"]')
client_email_txt_box = (By.XPATH, '//*[@id="rform_pt2_2"]')
但我的代码中有下面一行代码,我不确定如何编写它,以便它符合上述语法:
driver.find_element_by_class_name('coverUpload').find_element_by_class_name('pButton').click()
我在类中定位一个类,页面中有几个pButton
类,但只有一个在coverUpload
类中。
6条答案
按热度按时间pkwftd7m1#
您应该能够按以下方式安排您询问的行:
km0tfn4u2#
如果元素是唯一的,你可以使用相对Xpath来代替2类搜索。
nxowjjhe3#
使用 find_elements_by_class_name
eimct9ow4#
我建议使用selenium的
find_element_by_css_selector
,它允许更健壮和更复杂的类链接:5jvtdoz25#
在www.example.com中找到的提供的类locators.py不包含“coverUpload”或“pButton”定位器的类属性,但是,使用示例中定义的其中一个定位器,它将如下所示:
假设意图是点击出现的“添加新项目”按钮。
lrpiutwd6#
要找到具有所提供属性的按钮,我会使用“button”而不是“*"。我相信这样会更有效率。