selenium XPATH -如何使用Xpath读取所有元素并在下拉列表中选择第一个元素或随机元素

rnmwe5a2  于 2023-04-06  发布在  其他
关注(0)|答案(1)|浏览(275)

https://deliorder-web.shoprite.com/stores/279/departments/553/products/258234
大家好,
请转到上面的网址,我的问题是,我试图使用xpath从下拉列表“切片首选项”或“数量”中读取并选择一个随机元素,但我看不到任何选择值的方法。
当我检查开发工具时,我没有看到任何显示所有值的列表,但它显示了默认选择的Sliced Thin
我尝试使用Xpath首先单击下拉列表//[name()='svg'][contains(@class,'text-sm')]
然后尝试从下拉列表中读取值,但不起作用。//
[@id ='_80j8wwopf']/div[2]
我需要xpath表达式可以-
1.单击“切片偏好”或“数量”的下拉列表,2.read下拉列表中的值,3.select下拉列表中的随机值。
感谢在这方面的帮助。
谢谢
注意-附加的是屏幕截图相同的地方需要帮助.

z3yyvxxp

z3yyvxxp1#

看起来提供的URL中的下拉列表不是使用标准HTML元素构建的,而是很可能使用自定义JavaScript代码构建的,这意味着您无法使用简单的XPath表达式访问它。
在这种情况下,您可以尝试使用XPath和JavaScript代码的组合来实现您的目标。下面的示例展示了如何从“切片首选项”下拉列表中选择随机值:

# First, click on the dropdown to open it
driver.find_element_by_xpath("//*[name()='svg'][contains(@class, 'text-sm')]").click()

# Next, wait for the dropdown options to appear
time.sleep(1)

# Get all the dropdown options
options = driver.execute_script("return Array.from(document.querySelectorAll('#_80j8wwopf [role=\"option\"]')).map(option => option.textContent)")

# Select a random option from the list
random_option = random.choice(options)

# Click on the selected option
driver.execute_script(f"Array.from(document.querySelectorAll('#_80j8wwopf [role=\"option\"]')).find(option => option.textContent === '{random_option}').click()")

这段代码首先点击“切片首选项”下拉菜单打开它,等待一秒钟让选项出现,然后使用JavaScript检索所有下拉选项并随机选择一个。最后,它点击选中的选项来选择它。
请注意,此代码假设您使用Python中的Selenium WebDriver来自动化浏览器。如果您使用不同的工具或编程语言,则需要相应地调整代码。

相关问题