首页 > 解决方案 > 识别 Selenium 元素的属性?

问题描述

我正在尝试识别 Selenium Web 元素的属性。基本上我需要去一个产品页面,让用户识别一个输入字段,然后获取一些属性(比如名字、姓氏等),这样我就可以在另一个产品页面上识别相同的元素(所以我不能使用Xpath,因为它们是唯一的 ID,并且在同一站点上的另一个产品页面上不起作用)。

这是我到目前为止所拥有的,但是当我单击“名字”字段时,它返回 id = 'formPreviewArea' 这是否意味着它只识别表单本身?谁能帮我弄清楚当我点击它时如何获取有关该字段的一些识别信息?

理想情况下,我希望能够单击“名字”字段并返回“名字”,但我知道并非每个输入元素都会具有相同的属性。那么,我如何允许用户单击输入字段并返回一些内容,以便我在例如网上商店的另一个产品的结帐页面上找到相同的元素?

from selenium import webdriver #For automation
from pynput.mouse import Listener #For OnMouseClick
global driver

def OpenBrowser(url):
    global driver
    options = webdriver.ChromeOptions()
    driver = webdriver.Chrome(options=options, executable_path=r'C:\Users\David\Desktop\Python\chromedriver_win32\chromedriver.exe')
    driver.get(url)
    return

def InputClicked(*args):
    active_element = driver.switch_to.active_element
    attrs = driver.execute_script('var items = {}; for (index = 0; index < arguments[0].attributes.length; ++index) { items[arguments[0].attributes[index].name] = arguments[0].attributes[index].value }; return items;', active_element)
    print(attrs)

OpenBrowser('https://www.jotform.com/form-templates/choir-signup-form')

with Listener(on_click=InputClicked) as listener:
    listener.join()

这就是代码现在返回的内容。

{'data': '/form-templates/preview/20825060529450/classic&nofs', 'id': 'formPreviewArea', 'style': 'height: 571px;', 'type': 'text/html', 'width': '100%'}

标签: pythonseleniumbeautifulsoup

解决方案


推荐阅读