用于填充表单的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元素”(因为这是此网页上的第一个元素),谢谢您的更正。。很明显,它将返回找到的元素列表。