尝试从python中的div类获取文本时出现invalidselectorexception错误

rt4zxlrg  于 2021-07-14  发布在  Java
关注(0)|答案(2)|浏览(391)

我正在尝试使用seleniumwebdriver获取文本,下面是我的代码。请注意,我不想使用xpath,因为在我的例子中,每次重新启动web页面时id都会发生变化。
我的代码:

driver.find_element_by_class_name("05uR6d").text

html格式:

<div class="O5uR6d">to fasten stuff</div>

错误:

selenium.common.exceptions.InvalidSelectorException: Message: invalid selector: An invalid or illegal selector was specified (Session info: chrome=88.0.4324.150)

错误特定于我上面提到的代码行。
我怎样才能解决这个问题?

ryoqjall

ryoqjall1#

用这个 xpath :

driver.find_element_by_xpath("//div[contains(text(),'to fasten stuff')]")

还是这个 CSS :

driver.find_element_by_css_selector(".O5uR6d")

如果两者都不起作用,可以通过添加更多的html数据来改进您的问题。

yruzcnhs

yruzcnhs2#

它可以用多种方法来完成让我试着解释其中的大部分。
按类名获取元素。
这是按类名获取任何元素的最简单解决方案,您只需执行以下操作: driver.find_element_by_class_selector('foo'); 通过xpath获取元素
这是一个有点棘手的问题,您可以应用xpath,无论是类名、标题、id还是任何保持不变的内容。即使div中有文本,它也可以工作。例如: driver.find_element_by_xpath("//tagname[@attribute='value']") 或者在你的情况下: driver.find_element_by_xpath("//div['class='O5uR6d']") 或者你可以做一些像@vitalis说的事情 driver.find_element_by_xpath("//div[contains(text(),'to fasten stuff')]") 您可以在这个链接上阅读更多关于xpath以及如何找到它的内容
按id获取元素:
如果存在任何静态元素,也可以从id获取元素: driver.find_element_by_id('baz') 按名称获取元素:
使用以下语法按名称获取元素: driver.find_element_by_name('bazz') 使用css选择器:
您还可以使用css选择器来查找元素。考虑以下具有某些属性的标记: <p class="content">Site content goes here.</p> 您可以通过以下方式获取此元素: driver.find_element_by_css_selector('p.content') 你可以在这里读更多

相关问题