Python Selenium从“menubar”中选择“menuitem”

2024-10-03 17:15:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个代码,它单击网页上的按钮,弹出一个menubar。我想从出现的选项中选择menuitem,然后click选择menuitem(如果可能);但是,我遇到了一个障碍。在

以下是到目前为止该准则的相关部分:

from selenium import webdriver
driver = webdriver.Chrome()
driver.get('URL')

Btn = driver.find_element_by_id('gwt-debug-BragBar-otherDropDown')
Btn.click()  #this works just fine

MenuItem = driver.find_element_by_id('gwt-uid-463')  #I'm stuck on this line
MenuItem.click()

根据我写的,这是它抛出的错误:

^{pr2}$

注意:这个元素的id似乎每次页面加载时都会发生变化(这可能是错误的原因)。我也尝试过用find_element_by_class_name来搜索元素,但是它有一个复合类名,我也一直在那里得到一个错误。在

这是menubar的代码:

<div class="gux-combo gux-dropdown-c" role="menubar" id="gwt-debug-BragBar-otherMenu">

我想要的menuitem

<div class="gux-combo-item gux-combo-item-has-child" id="gwt-uid-591" role="menuitem" aria-haspopup="true">text</div>

我正在寻找选择menuitem的方法。谢谢!在


Tags: 代码dividbydriver错误elementfind
2条回答

试试这个xpath

driver.find_element_by_xpath('//div[@role='menuitem' and .='text']').click();

它将检查属性“role”为“menuitem”且文本精确为“text”的“div”元素。

比如说,菜单下有一个菜单项“兰博基尼AvenTaDor”。因此,代码将变成:

^{pr2}$

您可以find the element by xpath并检查id属性是否以gwt-uid-开头:

menu_item = driver.find_element_by_xpath('//div[starts-with(@id, "gwt-uid-")]')
menu_item.click()

如果需要,还可以应用其他检查,例如检查role属性:

^{pr2}$

相关问题 更多 >