Selenium 蟒无法send_keys

Selenium python not able to send_keys

提问人:SoftwareDS 提问时间:12/24/2019 最后编辑:JeffCSoftwareDS 更新时间:12/24/2019 访问量:163

问:

我正在将脚本自动化到 selenium python 中,在 selenium 搜索框中发送密钥时面临问题。

代码如下:

contact_old=driver.find_element_by_class_name("consoleRelatedRecord")
time.sleep(2)

search_c=contact_old.find_element_by_xpath('/html/body/div[5]/div[1]/section/div/div/div[1]/div[2]/div/one-record-home-flexipage2/forcegenerated-flexipage_rfq_default_rfq__c/flexipage-record-page-decorator/slot/flexipage-record-home-template-desktop2/div/div[2]/div[2]/slot/slot/flexipage-component2[1]/force-progressive-renderer/slot/slot/flexipage-aura-wrapper/div/article/div/div[2]/div/div/div[1]/div[2]/div/div/div[1]/div/input')

search_c.send_keys(contact_name)           
time.sleep(3)

xpath 总是在变化,你能在这个 SearchBOX 中找到更好的send_keys方法吗?

<input class=" default input uiInput uiInputTextForAutocomplete uiInput--default uiInput--input uiInput uiAutocomplete uiInput--default uiInput--lookup" maxlength="500" role="combobox" id="2197:0" aria-expanded="true" aria-autocomplete="list" type="text" aria-describedby="" aria-haspopup="true" aria-activedescendant="" data-aura-rendered-by="2239:0" data-aura-class="uiInput uiInputTextForAutocomplete uiInput--default uiInput--input uiInput uiAutocomplete uiInput--default uiInput--lookup" data-interactive-lib-uid="8" spellcheck="false" autocomplete="off" autocorrect="off" placeholder="Search contacts..." title="Search contacts...">

enter image description here

python selenium-web驱动程序

评论

0赞 Guy 12/24/2019
当你尝试这个时会发生什么?

答:

1赞 Sooraj 12/24/2019 #1

尝试使用以下 Xpath:

//input[contains(@title,'Search contacts')]

//input[@title='Search contacts...']

0赞 undetected Selenium 12/24/2019 #2

所需的元素是启用 ReactJS 的元素,因此要找到该元素,您必须为 _ 诱导 WebDriverWait,并且可以使用以下任一定位器策略element_to_be_clickable()

  • 用:CSS_SELECTOR

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input.default.input.uiInput.uiInputTextForAutocomplete.uiInput--default.uiInput--input.uiInput.uiAutocomplete.uiInput--default.uiInput--lookup[title^='Search contacts'][placeholder^='Search contacts']"))).send_keys(contact_name)
    
  • 用:XPATH

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//input[@class=' default input uiInput uiInputTextForAutocomplete uiInput--default uiInput--input uiInput uiAutocomplete uiInput--default uiInput--lookup' and starts-with(@title, 'Search contacts')][starts-with(@placeholder, 'Search contacts')]"))).send_keys(contact_name)
    
  • 注意:您必须添加以下导入:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC