1.
2.
3.
上述三个输入框的ID是动态的,页面刷新后变化;使用xpath定位也只能找到相对路径,如//*[@id="el-id-7471-7"],这样无法定位到唯一元素,使用CSS定位也是出现 #el-id-7471-7 ,同样无法定位到输入框。
感觉解惑!
回答如下,有帮助的话采纳一下哦!
1.用class类选择器定位,三个输入框的类选择器都一样
可以使用以下代码:
elements = driver.find_elements_by_class_name('el-input__inner')
这会返回一个包含所有匹配元素的列表,可以通过索引来访问特定的元素,例如 elements[0] 将返回第一个匹配的元素。
2.也可以用css选择器,type属性,find_element_by_css_selector 方法来定位第一个输入框
driver.find_element_by_css_selector("input[type='text']")
其他同理!
您可以尝试使用其他属性来定位这些输入框,比如class或者type等。例如,对于第一个输入框,您可以使用以下代码来定位:
input_box = driver.find_element_by_css_selector('input[type="text"][tabindex="0"]')
这样可以找到class为"el-input__inner",type为"text",tabindex为"0"的输入框。同样的方法可以用于第二个和第三个输入框。如果仍然无法定位到唯一元素,可以考虑使用相对路径进行定位,比如定位其父元素或者兄弟元素等。
以下答案由GPT-3.5大模型与博主波罗歌共同编写:
针对这种动态ID的情况可以使用模糊定位的方法,即定位元素属性的一部分。对于这里的ID属性,可以使用css_selector定位方法中的“^”(以什么开头)和“$”(以什么结尾)通配符进行模糊匹配定位。具体的代码如下:
driver.find_element_by_css_selector("input[id^='el-id'][type='text']")
driver.find_element_by_css_selector("input[id$='7471-8'][type='password']")
driver.find_element_by_css_selector("input[id^='el-id'][id$='7471-9'][type='text'][placeholder='请输入验证码']")
其中,^表示以什么开头,$表示以什么结尾。同时,我们可以通过加上更多的属性值进行更精确的定位。
注意,使用模糊定位时,如果不注意匹配的准确性,可能会匹配到其他元素,所以在使用时还需要结合具体的页面情况进行判断。
如果我的回答解决了您的问题,请采纳!
python
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("http://example.com")
# 使用contains()方法匹配输入框
input_box = driver.find_element_by_xpath("//input[contains(@class, 'el-input__inner')]")
python
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("http://example.com")
# 使用starts-with()方法匹配输入框
input_box = driver.find_element_by_xpath("//input[starts-with(@id, 'el-id-')]")
python
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("http://example.com")
# 使用ends-with()方法匹配输入框
input_box = driver.find_element_by_xpath("//input[ends-with(@id, '-7') or ends-with(@id, '-8') or ends-with(@id, '-9')]")
把你网址发出来,帮你搞定
该回答引用ChatGPTpython
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("http://example.com")
input_box = driver.find_element_by_xpath("//input[contains(@class, 'el-input__inner')]")
python
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("http://example.com")
input_box = driver.find_element_by_xpath("//input[starts-with(@id, 'el-id-')]")
python
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("http://example.com")
input_box = driver.find_element_by_xpath("//input[ends-with(@id, '-7') or ends-with(@id, '-8') or ends-with(@id, '-9')]")
driver.find_element_by_css_selector("input.el-input__inner[type='text']")