Python,Selenium chrome驱动程序来填写表格(元素ID发生变化)

时间:2018-09-24 07:10:41

标签: python selenium-chromedriver

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

enter image description here

这是网页的第一种形式。我想输入数字到这种形式。

问题在于,刷新网页时元素ID正在更改。因此,我对driver.find_element_by_xpath和driver.find_element_by_css_selector感到厌倦,它不会每次都捕获表单。

因此,我想也许可以找到文本“客户编号”的行,然后移至下一个元素,这可能是一个选择。但同样,“学生编号”的元素ID也在改变。

是否可以通过文本“ Student No.”来获取表格?还是有更好的选择?谢谢。

部分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>

3 个答案:

答案 0 :(得分:1)

也许这可以解决您的问题:

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

答案 1 :(得分:1)

如果要基于“学生编号”字符串,那么您可以使用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')

答案 2 :(得分:1)

driver.find_elements_by_class_name('inputField')[0].send_keys('Text')

有效!