我正在尝试使用Python和Selenium在Google Play网站页面上抓取应用程序上的评论数据。我在这里要做的是单击“完整评论”按钮以查看每个评论的全文。
但是我每次都会遇到这些错误:
ElementNotInteractableException: Message: element not interactable
或
AttributeError: 'list' object has no attribute 'click'
或
NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":".LkLjZd ScJHi OzU4dc "}
按钮的元素是这样的:
<button class="LkLjZd ScJHi OzU4dc " jsaction="click:TiglPc" jsname="gxjVle">Full Review</button>
按钮的xpath是这样的:
//*[@id="fcxH9b"]/div[4]/c-wiz/div/div[2]/div/div[1]/div/div/div[1]/div[2]/div/div[26]/div/div[2]/div[2]/span[1]/div/button
这是我用于xpath的代码:
full_review = driver.find_elements_by_xpath('//*[@id="fcxH9b"]/div[4]/c-wiz/div/div[2]/div/div[1]/div/div/div[1]/div[2]/div/div[26]/div/div[2]/div[2]/span[1]/div/button')
full_review.click()
我无法通过类名,xpath或其他任何东西找到按钮。 谁能帮我解决这个问题?另外,是否可以通过jsname查找元素? 如果您能提供帮助,我将不胜感激。
答案 0 :(得分:1)
尽可能避免使用xpath,它是最脆弱的选择器。
id> CSS> Xpath
对于您的按钮,此CSS选择器应该起作用:
button[jsname='gxjVle']
您可能需要指定孩子,因为孩子可能不是唯一的
答案 1 :(得分:0)
您的XPath选择器有些不稳定,您可以将其简化为:
//button[text()='Full Review']
WebDriver.find_element_by_xpath
,请注意,element
,而不是elements
假设以上所有条件
full_review = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//button[text()='Full Review']")))