单击 Inside div 和 table 中的文本
Clicking Inside the text inside div and table
我试图在 div 内的文本框内单击,而 div 本身位于 table 内。我尝试了很多方法,但 none 似乎有效
这是元素的代码:
<tr valign="top"><td id="xNEPk-chdex" style="height:100%"><div id="xNEPk" class="labelRowCnt z-div"><span id="xNEPm" class="z-label">Username:</span></div></td><td id="xNEPk-chdex2" class="z-hbox-separator"><img style="height:0;width:0"></td><td id="xNEPl-chdex" style="height:100%"><div id="xNEPl" class="compRowCnt z-div"><input id="xNEPn" class="login z-textbox" autocomplete="off" value="" type="text" name="j_username"></div></td></tr>
我无法使用元素 ID,因为每次刷新页面时元素 ID 都在变化
我试过以下方法,其中一些是
element =wait.until(EC.element_to_be_clickable((By.XPATH,'//div[@class=".compRowCnt.z-div"]/input[@class=".login.z-textbox"]')))
element.click()
element = driver.find_element_by_class_name("login.z-textbox")
element.click()
element =wait.until(EC.element_to_be_clickable((By.NAME,"j_username")))
element.click()
但 none 似乎有效。每次我都找不到元素。
我希望能够在文本框内单击,以便我可以使用发送键提供我的用户名。
谁能帮帮我?我正在使用 chrome
看来你很接近。由于所需的元素是动态元素,因此对于 click()
元素,您必须引入 WebDriverWait 才能使 元素可点击 并且您可以使用以下任一项 :
使用CSS_SELECTOR
:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input.login.z-textbox[name='j_username']"))).click()
使用XPATH
:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//input[@class='login z-textbox' and @name='j_username']"))).click()
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
我试图在 div 内的文本框内单击,而 div 本身位于 table 内。我尝试了很多方法,但 none 似乎有效
这是元素的代码:
<tr valign="top"><td id="xNEPk-chdex" style="height:100%"><div id="xNEPk" class="labelRowCnt z-div"><span id="xNEPm" class="z-label">Username:</span></div></td><td id="xNEPk-chdex2" class="z-hbox-separator"><img style="height:0;width:0"></td><td id="xNEPl-chdex" style="height:100%"><div id="xNEPl" class="compRowCnt z-div"><input id="xNEPn" class="login z-textbox" autocomplete="off" value="" type="text" name="j_username"></div></td></tr>
我无法使用元素 ID,因为每次刷新页面时元素 ID 都在变化
我试过以下方法,其中一些是
element =wait.until(EC.element_to_be_clickable((By.XPATH,'//div[@class=".compRowCnt.z-div"]/input[@class=".login.z-textbox"]')))
element.click()
element = driver.find_element_by_class_name("login.z-textbox")
element.click()
element =wait.until(EC.element_to_be_clickable((By.NAME,"j_username")))
element.click()
但 none 似乎有效。每次我都找不到元素。
我希望能够在文本框内单击,以便我可以使用发送键提供我的用户名。
谁能帮帮我?我正在使用 chrome
看来你很接近。由于所需的元素是动态元素,因此对于 click()
元素,您必须引入 WebDriverWait 才能使 元素可点击 并且您可以使用以下任一项
使用
CSS_SELECTOR
:WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input.login.z-textbox[name='j_username']"))).click()
使用
XPATH
:WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//input[@class='login z-textbox' and @name='j_username']"))).click()
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC