如何从具有特殊设置的网站上使用Selenium从下拉列表中选择一个值-Python

本斯

注意:我特别处理这个网站

我如何将Selenium与Python结合使用以获取此页面上的评论,以“最新”排序?

我试过的是:

driver.find_element_by_id('sort-order-dropdown').send_keys('Most recent') 

这个没有引起任何错误,但没有奏效。

然后我尝试

from selenium.webdriver.support.ui import Select

select = Select(driver.find_element_by_id('sort-order-dropdown'))
select.select_by_value('recent')
select.select_by_visible_text('Most recent')
select.select_by_index(1)

我有: Message: Element <select id="sort-order-dropdown" class="a-native-dropdown" name=""> is not clickable at point (66.18333435058594,843.7999877929688) because another element <span class="a-dropdown-prompt"> obscures it

这个

element = driver.find_element_by_id('sort-order-dropdown')
element.click()
li = driver.find_elements_by_css_selector('#sort-order-dropdown > option:nth-child(2)')
li.click()

这个引起了同样的错误味精

这一次,从这个引起了同样的错误也

Select(driver.find_element_by_id('sort-order-dropdown')).select_by_value('recent').click()

因此,我很想知道我是否可以选择从最新的评论开始排序的评论。

谢谢

尤金·S

使用Java对我有用:

@Test
public void amazonTest() throws InterruptedException {
    String URL = "https://www.amazon.com/Harry-Potter-Slytherin-Wall-Banner/product-reviews/B01GVT5KR6/ref=cm_cr_dp_d_show_all_top?ie=UTF8&reviewerType=all_reviews";
    String menuSelector = ".a-dropdown-prompt";
    String menuItemSelector = ".a-dropdown-common .a-dropdown-item";

    driver.get(URL);

    Thread.sleep(2000);

    WebElement menu = driver.findElement(By.cssSelector(menuSelector));
    menu.click();

    List<WebElement> menuItem = driver.findElements(By.cssSelector(menuItemSelector));
    menuItem.get(1).click();
}

您可以重复使用元素名称,并使用Python遵循类似的路径。

这里的关键点是:

  1. 点击菜单本身
  2. 单击第二个菜单项

更好的做法是不对项目编号进行硬编码,而是实际读取项目名称并选择正确的名称,以便即使菜单更改也可以使用。这只是未来改进的注意事项。

编辑这是可以在Python中完成的方法。

import time

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

URL = "https://www.amazon.com/Harry-Potter-Slytherin-Wall-Banner/product-reviews/B01GVT5KR6/ref=cm_cr_dp_d_show_all_top?ie=UTF8&reviewerType=all_reviews";
menuSelector = ".a-dropdown-prompt";
menuItemSelector = ".a-dropdown-common .a-dropdown-item";

driver = webdriver.Chrome()
driver.get(URL)

elem = driver.find_element_by_css_selector(menuSelector)
elem.click()

time.sleep(1)
elemItems = []
elemItems = driver.find_elements_by_css_selector(menuItemSelector)
elemItems[1].click()

time.sleep(5)
driver.close()

请记住,css选择器是xpath的更好选择,因为它们更快,更健壮并且更易于读取和更改。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用Selenium Python从下拉选项中选择一个值

为什么要在python中设置,从具有不同字符编码的字符串列表中选择第一个元素?

无法从硒python的下拉列表中选择一个值

Python Selenium从下拉列表中选择第一个元素

如何使用python从硒的自动建议列表中选择一个值

使用Python + Selenium选择一个下拉菜单

如何在python和selenium中使用execute_script从下拉列表中选择一个值

从下拉列表中选择一个值

如何使用Selenium和Python从下拉菜单中选择一个选项

如何使用Selenium和Python通过部分文本从下拉菜单中选择选项

如何使用Selenium和Python从DropDown列表中选择一个值

如何使用Selenium和Python从自动建议中选择一个选项

Python Selenium Web驱动程序:从下拉列表中选择值(无此类元素异常)

Python / Selenium:在几个下拉菜单中选择所有相同的类,选择一个值,刷新浏览器并重新启动脚本

使用selenium和python从下拉菜单中选择一个选项

Selenium Python无法从下拉列表中选择值,但是我可以单击它以打开下拉列表

如何使用Selenium Python从自动建议中选择一个值

无法从下拉菜单Python Selenium中选择一个选项

使用 python 和 selenium 从下拉列表中选择某个值

Selenium Python:如何从下拉列表中选择项目

无法使用 Flask 从下拉列表中获取在 python 中选择的值

如何编写一个 python 程序,从给定的下拉菜单中选择所有可能的组合,从网站上“抓取”结果?

如何使用 selenium python 选择下一个下拉菜单

Flask-python:从下拉列表中选择时不显示下拉选择的值?

Python (Selenium) 从 HHPRED 中选择一个下拉列表

如何从python selenium的下拉菜单中选择一个值

如何在python中使用硒从下拉列表中选择一个选项

Python Selenium - 从下拉菜单中选择值

无法使用 Python、Selenium 从下拉列表中选择一个选项