【问题标题】:Trouble locating dynamic element using selenium webdriver使用 selenium webdriver 定位动态元素时遇到问题
【发布时间】:2020-12-09 23:49:30
【问题描述】:

点击创建帐户后,我正在查找 facebook.com 上的名字框。 id 每次刷新都会改变,所以我很难找到它。 id 始终为 u_somenumber_b。例如 id = u_1_b, u_2_b 等。这是我目前所拥有的:

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC

# Open the Firefox browser
driver = webdriver.Chrome()

# Navigate to “http://qatechhub.com
driver.get('http://www.fb.com')

# Check current URL
url = driver.current_url
print(url)
assert url == 'https://www.facebook.com/'
print("URL confirmed")

# Verify that there is a “Create an account” section on the page.
create_account_css_locator = "a[id='u_0_2']"

# create_account_css_locator = "a#u_0_2" Also works here
create_account_element = driver.find_element_by_css_selector(
    create_account_css_locator)
assert create_account_element.text == 'Create New Account'
print("Create an account section confirmed")
create_account_element.click()


# Fill in the text boxes: First Name, Last Name, Mobile Number or email address,
#  “Re-enter mobile number”, new password.
first_name_xpath = "//input[starts-with(@id, 'u_') and contains(@id, '_b')]"
first_name_element = driver.find_element_by_xpath(first_name_xpath)
print(first_name_element)

当我运行代码时,它仍然无法识别我的 first_name_element。我将如何编码来定位这个元素?

【问题讨论】:

    标签: python selenium-webdriver automation qa


    【解决方案1】:

    使用唯一描述元素的简单定位器总是一个好主意。如果 id 属性发生变化,我建议使用静态的 name 属性:

    first_name_xpath = "//input[@name='firstname']"
    

    我不知道为什么你的 xpath 失败了,因为你没有提供你得到的错误。

    【讨论】:

      【解决方案2】:

      尝试使用“开始于”和“结束于”CSS 选择器:

      a[id^="u_"][id$="_b"]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-04-11
        • 2020-08-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多