在以下网站上:https://www1.hkexnews.hk/search/titlesearch.xhtml?lang=en
我正在尝试通过硒选择以下下拉列表选项:
在Headline category and Document Type
下,在第一个下拉列表上选择Headline Category
,然后在第二个列表上选择Announcements and Notices -> New Listings (Listed Issuers/New Applicants -> Allotment Results
。
我已经意识到您必须使用driver.find_element_by_css_selector()
,因为列表中的所有项目都没有唯一的ID。
我还意识到,当该选项不在视图中时,您必须滚动页面,以便CSS选择器可以选择它。
我应该做什么,但是没有吗?有人可以帮我解决这个问题吗?
```python
# Select dropdown list
driver.find_element_by_css_selector('#rbAfter2006 > div > div > div').click()
# Select Announcements and Notices
driver.find_element_by_css_selector('#rbAfter2006 > div ~ div > div > div > div > ul > li ~ li ').click()
# Scroll down so that New Listings (Listed Issuers/New Applicants) is in view
element = driver.find_element_by_css_selector('#rbAfter2006 > div ~ div > div > div > div > ul > li ~ li > a '
'~ div > div > ul > li ~ li ~ li ~ li ~ li ~ li ~ li ~ li ~ li')
actions = ActionChains(driver)
actions.move_to_element(element).perform()
# Click New Listings (Listed Issuers/New Applicants)
driver.find_element_by_css_selector('#rbAfter2006 > div ~ div > div > div > div > ul > li ~ li > a '
'~ div > div > ul > li ~ li ~ li ~ li ~ li ~ li ~ li ').click()
# THIS IS WHAT FAILS, Can't find element? I am currently printing the box so I know what is selected
print(driver.find_element_by_css_selector('#rbAfter2006 > div ~ div > div > div > div > ul > li ~ li > a '
'~ div > div > ul > li ~ li ~ li ~ li ~ li ~ li ~ li > a ~ div > ul > li ~ li').text)
```
我当前收到未找到错误的元素
答案 0 :(得分:0)
您能否尝试使用
之类的CSS选择器从下拉列表中获取列表?ul li a
然后循环查找匹配的值并单击它
答案 1 :(得分:0)
理想情况下,我们不应该选择具有如此复杂的CSS选择器的元素,而应尝试缩短CSS选择器。
然后
尝试将鼠标悬停在下拉菜单中的第一个元素上,
driver.action.move_to(first_element_in_dropdown).perform
然后
尝试滚动到所需的元素,
driver.execute_script("arguments[0].scrollIntoView({behavior: 'smooth', block: 'center', inline: 'nearest'});",element_to_be_selected)
注意:该代码在Ruby中,请尝试翻译为python并使用。这可能有帮助
答案 2 :(得分:0)