无法在网页上访问动态元素

时间:2019-07-14 16:36:06

标签: python-3.x selenium selenium-webdriver xpath dynamic

我无法在网页框上访问文本框,这是一个动态元素。我试图通过xpath上的许多属性对其进行过滤,但似乎id和name上更改的数字是元素xpath唯一的唯一部分。我尝试的所有过滤器均显示至少3个元素。我已经尝试了2天,真的需要这里的帮助。

from selenium import webdriver
def click_btn(submit_xpath): #clicks on button
    submit_box = driver.find_element_by_xpath(submit_xpath)
    submit_box.click()
    driver.implicitly_wait(7)
    return

#sends text to text box
def send_text_to_box(box_xpath, text):
    box = driver.find_element_by_xpath(box_xpath)
    box.send_keys(text)
    driver.implicitly_wait(3)
    return

descr = 'Can't send this text'
send_text_to_box('//*[@id="textfield-1285-inputEl"]', descr)' #the number         
#here is the changeable part on the xpath 

here is  part the html of the page, and the text box's I wan't is highlighted


edit:它现在可以与以下xpath一起使用// input [contains(@id,'textfield')and contains(@ aria-readonly,'false')and contains(@class,'x-form-invalid- field-default')]。希望我在此元素上找到了一些特定的东西:

enter image description here

1 个答案:

答案 0 :(得分:1)

您可以使用部分字符串而不是完全匹配来查找元素。也就是说,代替 send_text_to_box('//*[@id="textfield-1285-inputEl"]', descr)'请尝试send_text_to_box('//*[contains(@id,"inputEl")]', descr)'

如果在id中有多个具有字符串“ inputE1”的元素,则应该寻找其他保持不变的东西(可能还有其他属性)。否则,请尝试查找其他元素,然后遍历所需的输入。