硒:元素<span>无法滚动到视图中

时间:2020-11-11 00:52:39

标签: python selenium

我正在尝试抓取评论的回复。下面是我要加载的代码,然后单击“加载更多评论” btn。

WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.XPATH,"//div[@class='thread-node-children-show']/span"))).click()

但是,这仅加载了一些答复,然后我收到错误消息“元素无法滚动到视图中”。我不确定如何解决该错误。我尝试延长加载时间,但这没有帮助。

能请你帮忙吗?作为参考,我正在使用Python。我还应该补充一点,在使用for循环之前,我的代码是:

tabledata = [["City", "Count" ],
            ["Atlanta", '888'],
            ["New York", '888' ]]


bounding_box([10, cursor], height: 150, width: 300) do
            table(tabledata, :header => true, :column_widths => [250, 50], :cell_style => { :size => 10.5, style: :bold_italic, :height => 24 } ) do
                cells.padding = 6
                row(0).background_color = "edf0f3"
                row(1..3).column(1).background_color = "A61919"
                row(0).text_color = '5D7383'
                row(1..3).column(1).text_color = 'FFFFFF'
                row(1..3).column(0).text_color = '606060'
                row(0..3).borders = [:bottom]
                row(0..3).border_color = 'e0e9eD'
                row(0).border_width = 0.5
                column(1).style(:align => :center)
 end

但是,我添加了for循环,因为如果没有它,那一行代码将仅加载第一个答复,而不是所有答复。

谢谢。

1 个答案:

答案 0 :(得分:0)

基于阅读您的帖子,我认为您可以在Chome开发工具(F12)中使用以下xpath来确定显示多少个子元素

//div[@class='thread-node-children-show']

基于此结果(_的1),您可以使用scrollIntoView方法通过for-loop导航到元素。

示例代码

numOfElements = driver.find_elements(By.XPATH, "//div[@class='thread-node-children-show']").__len__()
for num in range(numOfElements):
    element = driver.find_element(By.XPATH, "//div[@class='thread-node-children-show'][{0}]".format(num + 1))
    driver.execute_script("return arguments[0].scrollIntoView();", element)