python - 识别 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%'}
解决方案
推荐阅读
- protractor - 如何在分页列表中导航,直到找到带有 Serenity-JS 的文本?
- perl - Moose 变量名称可能不包含 :: at
- wordpress - 试图让 Wordpress ACF 包含来自 YouTube 或 Vimeo 的视频,但我收到 500 错误
- wpf - 您好,我需要设置依赖属性更改监听器
- sql-server - 使用 Entity Framework 和 linq 查询 SQL Server 视图非常慢
- php - 请求属性在构造中返回 null
- python - PySpark RDD SortByKey() Not Working Properly
- python - 在 Visual Studio Code 中将焦点切换到 Jupyter (IPython) 终端
- java - 将未实现的接口转换为对象
- pytorch - RuntimeError:仅支持作为 JIT 输入的元组、列表和变量,但得到了 NoneType