selenium使用chrome webdriver访问带有更改ID的文本输入元素



我在访问这个特定网页的输入元素时遇到了麻烦。http://prod.symx.com/MTECorp/config.asp?cmd=edit&CID=428D77C8A7ED4DA190E6170116F3A71B如果网页超时,请继续点击下面的链接https://www.mtecorp.com/click-find/点击超链接" rl_reactor "带你去那页。在此页面上,我目前正在尝试访问网页的搜索栏/输入元素,以键入公司销售的零件号。这是为学校项目和收集数据从不同的公司定价等。我使用pycharm(python)和selenium来编写这个脚本。目前,这是我当前的代码片段

# web scraping for MTE product cost list
# reading excel files on the drive
import time
from openpyxl import workbook, load_workbook
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException
.........................
..more code
..........................
#part that is getting stuck on
if((selection >= 1) and (selection <= 7)):
print("valid selection going to page...")
if(selection == 1):
target=driver.find_element(By.XPATH,"/html/body/main/article/div/div/div/table/tbody/tr[1]/td[1]/a")
driver.execute_script("arguments[0].click();", target)
element = WebDriverWait(driver,100).until(EC.element_to_be_clickable((By.CSS_SELECTOR,".plxsty_pid"))).send_keys("test")
print("passed clickabel element agruementn")

目前,我的代码确实去RL_reactors页面如下所示,但是,当我使用CSS选择器的类名它不识别的类类型,我试图得到。当然,很多人会说为什么不使用XPath等等。我不能使用XPath等的原因是,元素id在脚本的每次迭代中都会发生变化。例如,程序id name的第一次运行将是"hr8"对于另一个脚本,程序名可以是&;dsfsih&;。根据我的观察,元素中唯一保持不变的部分是值和类名。我尝试过使用XPath、id、ccselector等,但没有结果。有什么建议谢谢!

因为你是使用javascript点击你的网站上的链接,硒不改变选项卡(因此它无法找到你正在寻找的类)。您可以显式地告诉selenium更改选项卡窗口。

url = "https://www.mtecorp.com/click-find/"
driver.get(url)
target=driver.find_element(By.XPATH,"/html/body/main/article/div/div/div/table/tbody/tr[1]/td[1]/a")
driver.execute_script("arguments[0].click();", target)
driver.switch_to.window(driver.window_handles[1])
element = WebDriverWait(driver,20).until(EC.element_to_be_clickable((By.CSS_SELECTOR,".plxsty_pid"))).clear()
element = WebDriverWait(driver,20).until(EC.element_to_be_clickable((By.CSS_SELECTOR,".plxsty_pid"))).send_keys('test')

或者,不单击链接,您可以通过再次调用driver.get()来获取href并在selenium的新实例中打开它。

url = "https://www.mtecorp.com/click-find/"
driver.get(url)
target_link=driver.find_element(By.XPATH,"/html/body/main/article/div/div/div/table/tbody/tr[1]/td[1]/a").get_attribute('href')
driver.get(target_link)
element = WebDriverWait(driver,20).until(EC.element_to_be_clickable((By.CSS_SELECTOR,".plxsty_pid"))).clear()
element = WebDriverWait(driver,20).until(EC.element_to_be_clickable((By.CSS_SELECTOR,".plxsty_pid"))).send_keys("test")

相关内容

  • 没有找到相关文章

最新更新