我正在做一个类似于这个->的刮刀
访问站点A -->单击立即购买按钮-->登陆亚马逊-->抓取数据-->返回站点A
问题是网站是在AnugularJS上创建的。我无法使用selenium.click()单击该按钮
我正在使用selenium和scrapy来抓取这个javascript页面。该页面是无限加载的页面,请建议一个解决方案,这是无限加载的页面。
下面是Div元素-
<a class="external" href="http://www.amazon.com/dp/B01DBR53FU/?tag=097-20&ascsubtag=v7_3_3_3m7_2nhz_0_x01_-srt5-" target="_blank" analytics-on="click" analytics-event="button" analytics-category="outbound" analytics-label="non-lethal-salt-firing-self-defense-gun" ng-click="click(post)" rel="nofollow">Check it out </a>
我尝试的语法是,
sel.xpath('//*[@class="button"]').click()
它返回,
'SelectorList' object has no attribute 'click'
发布于 2018-06-03 23:03:48
'SelectorList' object has no attribute 'click'
意味着click
方法不能处理由xpath返回的元素。
尝试一下-在Python中
element_to_click = self.driver.find_element_by_css_selector('a.external')
driver.execute_script("arguments[0].scrollIntoView(true);",element_to_click)
element_to_click.click()
或
element_to_click =
self.driver.find_element_by_xpath("//a[contains(@href,'http://www.amazon.com/dp/B01DBR53FU/?tag=097-20&ascsubtag=v7_3_3_3m7_2nhz_0_x01_-srt5-')]")
#assuming that the href doesn't change.
driver.execute_script("arguments[0].scrollIntoView(true);",element_to_click)
# scroll element into view
element_to_click.click()
或
您可以使用另一个答案中提到的linkText。
编辑3:尝试向此定位器发送JS点击
driver.execute_script("arguments[0].click();",element_to_click)
编辑4:请仔细查看此编辑。点击此页面上的任何礼物物品都非常容易
import time
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
chrome_path = 'your chromedriver path here'
driver = webdriver.Chrome(chrome_path)
driver.get("http://thisiswhyimbroke.com/gifts/gifts-for-men/")
time.sleep(5)
#clicks on the first gift article
first_article = driver.find_element_by_css_selector('#page-gifts > article:nth-child(1) > div.button > a')
first_article.click()
time.sleep(5)
所有提到的礼物文章都是由repeater
生成的,因为这是一个角度网页。所有显示的礼物都在一个article
标签中。
如果您想要单击第二个或第三个或任何其他文章按钮,您只需更改article:nth-child
以获得相应的子级,此代码就可以工作。
在开始自动化之前,请先简单阅读一下如何创建、使用定位器,然后再开始自动化。
发布于 2018-06-03 22:52:49
您可以使用CSS选择器,它是
".external"
或通过使用链接文本,
"Check it out"
https://stackoverflow.com/questions/50667446
复制相似问题