当前位置: 首页 > 知识库问答 >
问题:

Python Selenium查找元素XPath不起作用

倪振海
2023-03-14

我试着在网页上找到重构元素(时间-分钟)。我的代码只适用于前面的简单文本。现在我使用Ctrl Shift I并指出我的元素和“复制Xpath”。

此外,我还有一个Chrome扩展名“XPath helper”,并试图用它来实现这一点。XPath比我下面的代码要长。而且它也不起作用。

错误:NoSuchElementException:消息:没有这样的元素:无法定位元素:{“方法”:“xpath”,“选择器”:“/*[@id…”。。。。

而且,我还尝试使用按类、按标记、按CSS选择器查找。。它只在不同的页面上按标签工作,没有完美。

我不明白,为什么它只在一页上工作而不在第二页上。。稍后我想在flash中使用XPath查找元素。

更新现在我重试代码,它的工作!但是在下一个网页上仍然不起作用...为什么它如此多变?XPath更改,当页面重新加载或什么?从chrome浏览器中打开的flash获取文本(刷新)信息的最简单方法是什么?

import selenium
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
options = webdriver.ChromeOptions()
options.add_argument('headless')
driver = webdriver.Chrome(r"C:\Users\vishniakov\Desktop\python bj\driver\chromedriver.exe",chrome_options=options)
driver.get("https://www.betfair.com/sport/football/event?eventId=28935432")
print(driver.title)
elem =driver.find_element(By.XPATH,'//*[@id="yui_3_5_0_1_1538670363144_2571"]').text
print(elem)

共有2个答案

萧越泽
2023-03-14

假设您确实需要SPCIC数据,可以使用contains()Xpath方法。。。你可以在这里读到

对于您的情况:

import selenium
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
options = webdriver.ChromeOptions()
options.add_argument('headless')
driver = webdriver.Chrome(r"C:\Users\vishniakov\Desktop\python bj\driver\chromedriver.exe",chrome_options=options)
driver.get("https://www.betfair.com/sport/football/event?eventId=28935432")
print(driver.title)
elements =driver.find_elements(By.XPATH,'//*[contains(@id, "yui_3_5_0_1_")]')
print([i.text for i in elements])

如果我的示例不起作用,您可以使用contains()。。。您必须找到id更改的部分,并排除该部分id。

希望这对你有帮助!

戴鸿羽
2023-03-14

假设您需要该页面的数据,而不是任何特定元素的数据,则可以这样做:

import selenium
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
options = webdriver.ChromeOptions()
options.add_argument('headless')
driver = webdriver.Chrome(chrome_options=options)
driver.get("https://www.betfair.com/sport/football/event?eventId=28935730")
print(driver.title)
elem =driver.find_element(By.CSS_SELECTOR,'.scroller.context-event').text
print(elem)
 类似资料:
  • 我正在测试一个网站,以了解如何在C#中使用硒。我无法找到登录表单元素,因为表单输入元素没有任何标识符,而且xpath在我的代码中不起作用。 我包括了一张inspect元素代码的照片,我在检查相关的登录表单元素时看到了该代码。我的代码如下。 当然,我为密码包含的xpath是一个占位符,但它应该看起来与用户名相似。 在使用chrome的copy复制xpath时 我已经找了几个小时的答案,但什么都找不到

  • 请帮助我,我正在尝试选择一个图片,这是一个链接(一个网站上的培训师) 这是我的代码:

  • 我一直在为这个selenium项目苦苦挣扎,一直在寻找与这个问题略有关联的老参考资料或帖子。我承认我不熟悉xpath和selenium,所以希望它可以像修复语法一样简单。我正在使用python 3.6。卢本图19.10上的9,如果这有什么区别的话。 我试图访问的html元素: 我尝试过的代码: 尝试不同的XPath时出现的错误消息: 我检查了火狐来尝试捕获xpath,显示为: 虽然我还不确定如何调

  • 我是DOM查询的新手,我想知道是否可以通过Xpath直接查询DOM元素,类似于下面提到的代码? 谢谢

  • 问题内容: 我正在尝试编写Selenium测试用例,并从Firefox中的Selenium IDE开始。那里的测试工作很好。现在,我想使用Selenium Webdriver自动化该测试,并导出相应的JAVA类。到目前为止,一切都已设置并且运行良好(Internet Explorer窗口正在打开,显示相应的页面)。 但是:Selenium Webdriver找不到元素。我想获得以下元素: 而且我有