Selenium python-如何滚动到其父元素包含class=”的文本;"; 如何滚动到只包含min类的文本

Selenium python-如何滚动到其父元素包含class=”的文本;"; 如何滚动到只包含min类的文本,python,selenium,Python,Selenium,这段代码的问题是,它也会滚动到不包含min类的文本 图像文件: 您可以尝试使用此xpath表达式来获取“2HH”的值。问题在于您的xpath定位器。您正在查找parent,然后使用XPath从那里开始,仅使用parent搜索子元素。通过XPath(“//div…”)查找元素。如果希望XPath从parent上下文开始,则需要在开始处添加,例如”//div[@class='value'和。。。“。如果未包含该,则XPath会查看您发现的整个页面 有一个更好的方法来做到这一点…不要打印一堆截图,只

这段代码的问题是,它也会滚动到不包含min类的文本

图像文件:


您可以尝试使用此xpath表达式来获取“2HH”的值。

问题在于您的xpath定位器。您正在查找
parent
,然后使用XPath从那里开始,仅使用
parent搜索子元素。通过XPath(“//div…”
)查找元素。如果希望XPath从
parent
上下文开始,则需要在开始处添加
,例如
”//div[@class='value'和。。。“
。如果未包含该
,则XPath会查看您发现的整个页面

有一个更好的方法来做到这一点…不要打印一堆截图,只要拉你想要的几率,并将它们与你想要的列表进行比较

values_from_page = driver.find_elements_by_css_selector(".odd.min > div.value") # all odds elements from the page
odds = (e.text for e in values_from_page if e.is_displayed()) # filter down to only visible elements and get the text
print(odds)

new_text = ['2.10', '2.15', '2.20', '2.25', '2.30', '2.35', '2.40', 
            '2.45', '2.50', '2.55', '2.60', '2.65', '2.70',
            '2.75', '2.80', '2.85', '2.90', '2.95', '3.10']
missing_odds = new_text.difference(odds) # filter down to any new_text odds missing on page
print(missing_odds)
这是未经测试的代码,但应该非常接近。使用我的代码,它应该运行得更快,因为在
new_text
中,您只需对页面进行一次(并且仅进行一次)抓取,而不是对每个项目进行两次抓取,再加上滚动页面并为每个项目截图

当你拍摄屏幕截图时,必须有人查看它以进行验证。这需要手动工作和时间…尽可能避免这种情况。让自动化为你进行验证,并且只在出现错误/缺失时报告。如果
缺失\u赔率
为空
len(x)=0
,则找到了
新文本中的所有项目。页面中缺少任何打印内容


希望这能帮助您朝着正确的方向开始。

到目前为止,您尝试了什么?您能为问题添加一些代码吗?请参阅:so的期望是,提出问题的用户不仅会进行研究以回答他们自己的问题,而且会分享这些研究、代码尝试和结果。这表明您已经恩,在尝试帮助自己的时候,它可以避免我们重复显而易见的答案,最重要的是,它可以帮助您获得更具体、更相关的答案!另请参见:您为什么需要滚动到该文本?@JeffC,我需要确认该文本存在页面,并且该页面为minclass@jamesmaduka类
min
是否总是随c一起出现LASS <代码>奇数?还是沿着类<代码>甚至?如果是的话,你会考虑用类<代码> min < /代码>滚动到第一个元素吗?
new_text = ['2.10', '2.15', '2.20', '2.25', '2.30', '2.35', '2.40', 
                 '2.45', '2.50', '2.55', '2.60', '2.65', '2.70',
                 '2.75', '2.80', '2.85', '2.90', '2.95', '3.10']

for text in new_text:
    if text in driver.page_source:
       parent = driver.find_element_by_css_selector(".odd.min")
       child = parent.find_element_by_xpath("//div[@class='value' 
               and text()='" + text + "']")
       if child:
               print(text)
               element = child
               driver.execute_script('arguments[0].scrollIntoView();', 
                 element)
               driver.save_screenshot('lo7.png')
               break
       else:
               print("No odd found")
               continue
//div[@class='odd min']/div[@class='tq']/text()
values_from_page = driver.find_elements_by_css_selector(".odd.min > div.value") # all odds elements from the page
odds = (e.text for e in values_from_page if e.is_displayed()) # filter down to only visible elements and get the text
print(odds)

new_text = ['2.10', '2.15', '2.20', '2.25', '2.30', '2.35', '2.40', 
            '2.45', '2.50', '2.55', '2.60', '2.65', '2.70',
            '2.75', '2.80', '2.85', '2.90', '2.95', '3.10']
missing_odds = new_text.difference(odds) # filter down to any new_text odds missing on page
print(missing_odds)