在div和tab内的文本内单击

2024-10-02 04:19:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在一个文本框内单击,该文本框位于一个div内,而div本身位于一个表内。我尝试过许多方法,但似乎都不管用

这是元素的代码:

<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()

但似乎都不管用。每次我得到的元素都找不到

我希望能够在文本框内单击,以便使用发送键提供我的用户名

有人能帮我吗?我用的是铬


Tags: 方法divid元素styleloginelementtr
1条回答
网友
1楼 · 发布于 2024-10-02 04:19:54

看起来你很接近。由于所需元素是一个动态元素,因此click()您必须诱导WebDriverWait,才能单击元素,并且您可以使用以下任一Locator Strategies

  • 使用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
    

相关问题 更多 >

    热门问题