检测是否存在含硒的元素

Detection of the presence or absence of an element with selenium

提问人:MAHMUT CAN SARIBAL 提问时间:11/18/2023 更新时间:11/18/2023 访问量:23

问:

我的问题如下;首先,我从页面中提取评论,当这些评论很长时,有一个“查看更多”按钮,我按下这个按钮。但是,问题从这里开始,并非页面的每个页面都有此按钮。如果找不到,程序就会停止,但如果我自己切换到另一页,它就会继续。我正在等待你的解决方案。问候。

try:
  button = driver.find_elements(By.CSS_SELECTOR, 'span.********')
  for button in devamini_gor_button:
     button.click()
     ......
     ....
     ...
except:
  print('Error')

问题简介:并非在每个评论中都能找到此按钮。有些页面没有它,所以程序正在等待,我必须手动在页面之间切换。

首先,我做了研究,我发现了这样一个函数,我认为它返回了一个布尔值(element.is_displayed()),我给它赋值了一个值。例如;incoming_value= element.find_element(......)。is_displayed()

if incoming_value== True:
button = driver.find_elements(By.CSS_SELECTOR, 'span.********')
  for button in devamini_gor_button:
     button.click()
     ......
     ....
     ...
else:
   comment = driver.find_elements(......);,

我做了一些这样的实验,但我没有得到任何结果。

python selenium-webdriver 测试 网页抓取

评论

0赞 pcalkins 11/18/2023
检查元素是否存在的一种简单方法是使用 find_elements,然后检查返回的 WebElement 数组的大小。如果未找到,此方法将返回一个零大小的数组。
0赞 MAHMUT CAN SARIBAL 11/18/2023
您是否建议我使用“size()”函数。我想声明,我是一名计算机工程专业的学生,我正在该领域进行一项新的研究。
0赞 MAHMUT CAN SARIBAL 11/18/2023
@PCalkins帮帮我,先生。
0赞 hfontanez 11/18/2023
如果我理解正确,你的问题是你不能测试阴性。有些元素有这个“查看更多”按钮。为了正确测试,您必须确切地知道导致此按钮出现的条件,复制条件,然后进行测试。如果无法控制条件,则无法执行正确的断言。例如,在受控情况下,如果希望出现按钮,则可以编写一个超时函数,该函数在超时到期时使测试失败。但是,如果由于注释不够长而未显示该按钮,则测试将不必要地失败。
0赞 hfontanez 11/19/2023
^^^ 继续我之前的想法,假设该按钮仅在评论长度超过 300 个字符时显示,您要么 1) 知道这些评论的位置(在 DOM 中)(不是一个好方法)并定位它们,或者 2) 调用一个 API,允许您在测试前将已知长度的评论预加载到已知位置(即页面上的第一条评论), 然后以受控方式运行测试。

答: 暂无答案