用于填充表单的Python、selenium chrome驱动程序(元素ID';正在更改)

用于填充表单的Python、selenium chrome驱动程序(元素ID';正在更改),python,selenium-chromedriver,Python,Selenium Chromedriver,公司内部网页的一部分如下所示: input = driver.find_element(By.XPATH, '//div[text()="Student No."]/../div[2]/span/div/input') 这是网页的第一种形式。我想在这张表格上输入数字 问题是,刷新网页时元素id正在更改。所以我厌倦了driver.find_element_by_xpath和driver.find_element_by_css_选择器,它不是每次都捕获表单 所以我想也许可以找到“Customer

公司内部网页的一部分如下所示:

input = driver.find_element(By.XPATH, '//div[text()="Student No."]/../div[2]/span/div/input')

这是网页的第一种形式。我想在这张表格上输入数字

问题是,刷新网页时元素id正在更改。所以我厌倦了driver.find_element_by_xpath和driver.find_element_by_css_选择器,它不是每次都捕获表单

所以我想也许可以找到“Customer No.”这行文字,然后移动到下一个元素,这可能是一种选择。但同样,“学生号”的元素id也在变化

有没有办法通过文本“学生号”来获取表格?还是有更好的选择?多谢各位

部分HTML代码如下所示:

<div class="labeledField">
        <div class="fieldLabel beanRequiredField">Student No.</div>
        <div class="field"><span id="id16">
    <div>
    <input type="text" class="inputField" value="" name="tabs:r:0:c:0:c:field:c:p:r:0:c:0:c:field:c:frag:component" id="id4e" customid="StudentId" autocomplete="off">
</div>
</span></div>
    </div>

学生号。

也许这会解决您的问题:

WebDriverWait wait=新的WebDriverWait(驱动程序,15); wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath(//input[@id='text3']))

如果要基于“学生编号”字符串,则可以使用XPath选择器:

//div[text()="Student No."]/../div[2]/span/div/input
因此,对于Python来说,应该是这样的:

input = driver.find_element(By.XPATH, '//div[text()="Student No."]/../div[2]/span/div/input')

它起作用了

驱动程序。通过类名('inputField')查找元素。发送密钥('Text')
@CSMaverick,你能将此作为答案发布吗?它与“driver.find_elements_by_class_name('inputField')[0]”一起工作。谢谢!它只在指明它是哪个元素时才起作用,比如“驱动程序。通过\u类\u名称('inputField')[0]查找\u元素”(因为这是此网页上的第一个元素),谢谢您的更正。。很明显,它将返回找到的元素列表。