我正在尝试使用Python Selenium登录到网页。但是,我没有得到正确的答复。输入框位于网络中的HTML表格下方。
这是我在网上查找一些教程之后尝试过的。
driver.find_element_by_xpath("//table[5]/tbody/tr[1]/td[2]/input").send_keys("hi")
HTML代码:
<html>
<head>...</head>
<body>
<form name="form" action method="post" onsubmit>
<table border="0" , width="100%" cellpadding="0" cellspacing="0">...</table>
<table border="0" , width="100%" cellpadding="0" cellspacing="0">...</table>
<table border="0" , width="100%" cellpadding="0" cellspacing="0">...</table>
<table align="center" border="0" width="100%" cellpadding="0" cellspacing="0">...</table>
<table align="center" border="0" width="100%" cellpadding="0" cellspacing="0">
<tbody>
<tr align="left">
<td class="mandatory"> USER ID</td>
<td class="normal">
<input class="subject" type="text" name="username" size="35" maxlength="10" onkeypress="navigate();">
</td>
</tr>
</tbody>
</table>
我有兴趣在第五张表input class = "subject"
中选择元素。
以下是从Chrome检查器复制的xPath代码:
/html/body/form/table[5]/tbody/tr[1]/td[2]/input
答案 0 :(得分:0)
答案 1 :(得分:0)
要将字符序列发送到与文本 USER ID 相关的登录<input>
元素,您必须诱使 WebDriverWait 元素可点击,您可以使用以下任一解决方案:可以使用以下Locator Strategies之一:
使用CSS_SELECTOR
:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input.subject[name='username'][onkeypress^='navigate']"))).send_keys("Wen Jiaxin")
使用XPATH
:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//input[@class='subject' and @name='username'][starts-with(@onkeypress, 'navigate')]"))).send_keys("Wen Jiaxin")
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC