无法在内部模拟onclick javascript<;span>;使用SeleniumWebDriver、python标记

无法在内部模拟onclick javascript<;span>;使用SeleniumWebDriver、python标记,javascript,python,selenium,web-scraping,beautifulsoup,Javascript,Python,Selenium,Web Scraping,Beautifulsoup,我试图在下面的标记处模拟onclick事件 span class=“taLnk hvrIE6 tr165579546 moreLink ulBlueLinks”onclick=“ta.util.cookie.setPIDCookie(2247);ta.call('ta.servlet.Reviews.expandReviews',事件,this,'review_165579546',1',2247)”> 更多 这用于查看此链接下的更多文本。我正在使用SeleniumWebDriver和pytho

我试图在下面的标记处模拟onclick事件

span class=“taLnk hvrIE6 tr165579546 moreLink ulBlueLinks”onclick=“ta.util.cookie.setPIDCookie(2247);ta.call('ta.servlet.Reviews.expandReviews',事件,this,'review_165579546',1',2247)”> 更多

这用于查看此链接下的更多文本。我正在使用SeleniumWebDriver和python为此网页自动模拟此事件 这个网页


任何人都可以共享一段代码片段来激活此javascript事件,以便页面加载,我可以自动查看该链接下的全部文本…我尝试使用selenium webdriver的click()选项,但无效。

这为我提供了窍门:

from selenium import webdriver

url = 'http://www.tripadvisor.in/Hotel_Review-g297586-d1154547-Reviews-Rainbow_International_Hotel-Hyderabad_Telangana.html'

browser = webdriver.Firefox()
browser.get(url)
li = browser.find_element_by_css_selector('#PERSISTENT_TAB_HR .tabs_pers_content li:nth-child(2)')
li.click()

您可以从以下想法开始:

  • 迭代页面上的所有评论(id为
    id
    的div元素以
    review\uu
    开头)
  • 对于每次审阅,如果存在
    More
    链接,请单击该链接(span with
    moreLink
    类名)
  • 稍作延迟后,获得完整的复习文本
以下是实现:

import time
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException, TimeoutException
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Firefox()
driver.get("http://www.tripadvisor.com/Hotel_Review-g297586-d1154547-Reviews-Rainbow_International_Hotel-Hyderabad_Telangana.html")

for review in driver.find_elements_by_xpath('//div[starts-with(@id, "review_")]'):
    try:
        more = WebDriverWait(review, 3).until(EC.presence_of_element_located((By.CLASS_NAME, 'moreLink')))
        if more.is_displayed():
            more.click()
            time.sleep(1)
    except (NoSuchElementException, TimeoutException):
        pass

    full_review = review.find_element_by_class_name('dyn_full_review')
    print full_review.text
    print "----"
打印(输出包含每个评论中的所有文本,包括用户名和日期):

希望这能让你更清楚

Mustufa W
1 review
“Horrible”
Reviewed August 15, 2014
I checked on price was high but cracked a deal
Poor hygiene in corridor & so in rooms. Washroom pipes were leaking. AC water dripping in washroom.
First I was given a room to which my surprise found window pane was missing after complaining room got changed.
They are cheating ppl only good thing abt hotel is the spot & is damn opposite Nilofer cafe which serves delicious tea,coffee & bakery products.
There is a guy named khwaja who was very helpful. Front @ reception guy was stupid..in one midnight , power went off & to my surprise they don't have power back up..
Stayed August 2014, traveled as a couple
Less
Was this review helpful?
Yes
Ask Mustufa W about Rainbow International Hotel
This review is the subjective opinion of a TripAdvisor member and not of TripAdvisor LLC.
----
mrravi4u
Bangalore, India
2 reviews
13 helpful votes
“Good Hotel”
Reviewed April 23, 2014
I stayed there 2 days i got good services. Rainbow Is good hotel in Hyderabad. there are very homely environment and hosting services was supper. it is also in center of hyderabad city so for convenience is is better place to stay.
Room Tip: Office Meeting
See more room tips
Stayed March 2014, traveled with friends
Value
Location
Sleep Quality
Rooms
Cleanliness
Service
Was this review helpful?
Yes
13
Ask mrravi4u about Rainbow International Hotel
This review is the subjective opinion of a TripAdvisor member and not of TripAdvisor LLC.
----
...