我正在尝试使用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)
错误特定于我上面提到的代码行。
我怎样才能解决这个问题?
2条答案
按热度按时间ryoqjall1#
用这个
xpath
:还是这个
CSS
:如果两者都不起作用,可以通过添加更多的html数据来改进您的问题。
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')
你可以在这里读更多