Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Selenium/Python:在找到正确位置后从一个长列表中选择链接_Python_Selenium_Webdriver_Selenium Chromedriver - Fatal编程技术网

Selenium/Python:在找到正确位置后从一个长列表中选择链接

Selenium/Python:在找到正确位置后从一个长列表中选择链接,python,selenium,webdriver,selenium-chromedriver,Python,Selenium,Webdriver,Selenium Chromedriver,该公司有一个100多个站点的列表,我正试图使用SeleniumWebDriver自动将用户带入该站点。我对编程相当陌生,所以如果我的问题措辞不当,请原谅我。。但是,我试图从用户那里获取一个站点的名称,例如下面示例中的“Alpharetta-Cemex”,并在这个长列表中找到它,然后选择该链接。通过测试,我非常确定我需要点击的元素是h3类,该类也包含数据hmi名称下的站点名称 网站代码示例: 我试着使用下面的方法,但似乎从来都不起作用 driver.find_element_by_css_sel

该公司有一个100多个站点的列表,我正试图使用SeleniumWebDriver自动将用户带入该站点。我对编程相当陌生,所以如果我的问题措辞不当,请原谅我。。但是,我试图从用户那里获取一个站点的名称,例如下面示例中的“Alpharetta-Cemex”,并在这个长列表中找到它,然后选择该链接。通过测试,我非常确定我需要点击的元素是h3类,该类也包含数据hmi名称下的站点名称

网站代码示例:

我试着使用下面的方法,但似乎从来都不起作用

driver.find_element_by_css_selector("h3.tru-card-head-text uk-text-center[data-hmi-name='Alpharetta - Cemex']").click()
 
#For this one I tried to select the h3 class by searching for all those elements that has the name Alpharetta - Cemex


任何帮助或指导都将不胜感激!我是Python编程新手,如果你能解释我做错了什么,我将永远感激你

如果您想单击单个链接(例如Alpharetta-Cemex),您可以尝试如下操作:

theSite = "Alpharetta - Cemex" #You can store user inputted site Name here
linkXpath = "//a[h3[contains(text(),'"+theSite +"']]"
    
WebDriverWait(driver, 30).until(EC.element_to_be_clickable((By.XPATH, linkXpath))).click() #This will wait for element to be clickable before it clicks
ele = WebDriverWait(driver, 30).until(EC.presence_of_element_located((By.XPATH, linkXpath)))
driver.execute_script("arguments[0].scrollIntoView();", ele )
driver.execute_script("arguments[0].click();", ele )
如果上述情况不起作用。如果您的链接不在屏幕中/不可见。您可以使用java脚本首先滚动到元素,然后单击,如下所示:

theSite = "Alpharetta - Cemex" #You can store user inputted site Name here
linkXpath = "//a[h3[contains(text(),'"+theSite +"']]"
    
WebDriverWait(driver, 30).until(EC.element_to_be_clickable((By.XPATH, linkXpath))).click() #This will wait for element to be clickable before it clicks
ele = WebDriverWait(driver, 30).until(EC.presence_of_element_located((By.XPATH, linkXpath)))
driver.execute_script("arguments[0].scrollIntoView();", ele )
driver.execute_script("arguments[0].click();", ele )
您需要导入:

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

mate欢迎来到编码世界。你能告诉我你目前的代码遇到了什么错误/问题吗。此外,您还应该始终以文本格式而不是代码片段共享HTML。如果你能分享以上所有信息,我将能够以更好的方式帮助你。对不起,Rahul!下次我一定会这么做。别难过,伙计,我们都是来学习的。快乐学习,干杯。这太棒了!非常感谢拉胡尔。我无法告诉你这一切有多有用,多么清楚。很高兴能帮助你。如果这有助于你解决问题,请投票表决。这将反过来帮助我和其他人:)。干杯