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

Selenium在特定页面的XPATH上找不到元素

陶星波
2023-03-14
<divclass="hmMainHeaderRHSLoggedOutWide_Login">Login</div> 
/html/body/div[1]/div/div[3]/div[1]/div/div[2]/div[4]/div[3]/div
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
from webdriver_manager.chrome import ChromeDriverManager

service = Service(ChromeDriverManager().install())
driver = webdriver.Chrome(service=service)
driver.get('https://www.bet365.com/#/HO/')
TIME_TO_LOAD = 10
try:
   element = WebDriverWait(driver, TIME_TO_LOAD).until(
   EC.presence_of_element_located(
        (By.XPATH, '/html/body/div[1]/div/div[3]/div[1]/div/div[2]/div[4]/div[3]/div'))
    )
finally:
   driver.quit()

基于文本的HTML:

共有2个答案

徐晔
2023-03-14

始终尝试使用每次加载页面时最有可能保持不变的东西指出您想要的元素,因此您想要的元素的选择器应该使用唯一的东西,例如“id”或“class”,因为层次结构最有可能改变。

在这种情况下,我使用类“hm-MainHeaderRHSLoggedOutWide_Login”来定位元素。

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
from webdriver_manager.chrome import ChromeDriverManager

service = Service(ChromeDriverManager().install())

driver = webdriver.Chrome(service=service)

driver.get('https://www.bet365.com/#/HO/')
TIME_TO_LOAD = 10

try:
    element = WebDriverWait(driver, TIME_TO_LOAD).until(
        EC.presence_of_element_located(
            (By.XPATH, '//*[@class="hm-MainHeaderRHSLoggedOutWide_Login "]')
        )
    )
    print(element.text)

except Exception as e:
    print(e)

finally:
    driver.quit()
蓝侯林
2023-03-14

尝试下面的xpath

"//*[normalize-space(text())='Login']"

"//*[contains(text(),'Login')]"

单击按钮

button = driver.find_element(By.XPATH, "//*[contains(text(),'Login')]")

button.click()

此外,提供更多信息以清楚地理解问题。

 类似资料:
  • 我对在Selenium中使用python还很陌生。

  • 我尝试了这些方法,甚至放置等待,但仍然没有找到元素:

  • 我正在尝试用Selenium WebDriver、Java、Junit和Cucumber BDD来自动化一个航空公司的web应用程序。我能够创建一个简单的场景,比如选择一个带有出发日期的单程航班,然后选择一个座位,然后继续到付款页面。我能够写出所有的测试步骤,直到到达付款页面。Selenium成功地对所有页面中的所有元素执行了操作,但对支付页面中的任何元素执行了操作,却不成功。我尝试了隐式wait

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

  • Selenium.Common.Exceptions.NosuChelementException:消息:没有这样的元素:找不到元素:

  • 有一个页面带有一些HTML: 并且我想通过文本查找元素到LI中。如果我试图用XPath找到它: null [contains(text(),'text1\r\ntext2')]/accentor::li“ 没有建立任何元素。我尝试在xpath前面使用@,如:“@[contains(text(),'text1\r\ntext2')]/accentor::li” 但也没有结果。我应该找到整个文本的元素