注意:我特别处理这个网站
我如何将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()
因此,我很想知道我是否可以选择从最新的评论开始排序的评论。
谢谢
使用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遵循类似的路径。
这里的关键点是:
更好的做法是不对项目编号进行硬编码,而是实际读取项目名称并选择正确的名称,以便即使菜单更改也可以使用。这只是未来改进的注意事项。
编辑这是可以在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] 删除。
我来说两句