Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/411.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
Javascript Python Selenium选择动态网页上的复选框_Javascript_Python_Selenium_Checkbox_Web Scraping - Fatal编程技术网

Javascript Python Selenium选择动态网页上的复选框

Javascript Python Selenium选择动态网页上的复选框,javascript,python,selenium,checkbox,web-scraping,Javascript,Python,Selenium,Checkbox,Web Scraping,我已经尝试了几个代码片段,我发现它们没有为我做这项工作。此外,我检查并发现正在尝试选择的元素的ID为 按\u id查找\u元素\u 没用。我也试过了 通过xpath查找元素和通过名称查找元素 他们中没有人工作。我想能够选择一个复选框上 我的代码如下所示: from selenium.webdriver.common.keys import Keys url = "the web page above" # Creates an instance driver object for chrom

我已经尝试了几个代码片段,我发现它们没有为我做这项工作。此外,我检查并发现正在尝试选择的元素的ID为

按\u id查找\u元素\u

没用。我也试过了

通过xpath查找元素和通过名称查找元素

他们中没有人工作。我想能够选择一个复选框上

我的代码如下所示:

from selenium.webdriver.common.keys import Keys

url = "the web page above"

# Creates an instance driver object for chrome browser...
driver = webdriver.Chrome()

# Get the url
driver.get(url)
driver.maximize_window()

# Find list elements by id and click/select on it....
driver.find_element_by_xpath(".//*[contains(text(), 'Osborne & Little')]").click()
您使用的xpath是错误的。 转到chrome->inspect->cmd+F 您可以尝试输入Xpath来测试选择元素

给你举个例子

      <span class="tss-label tss-label--hierarchy ng-binding" ng-class="displayRow[instance.item.id] ? 'tss-hierarchy__selectedStateText' : ''" ng-bind="instance.item.alias" title="Node-1: Instance #1 - d07f2ec4-71f1-4ae0-81c6-955c86e14c6e">Node-1: Instance #1</span>
您使用的xpath是错误的。 转到chrome->inspect->cmd+F 您可以尝试输入Xpath来测试选择元素

给你举个例子

      <span class="tss-label tss-label--hierarchy ng-binding" ng-class="displayRow[instance.item.id] ? 'tss-hierarchy__selectedStateText' : ''" ng-bind="instance.item.alias" title="Node-1: Instance #1 - d07f2ec4-71f1-4ae0-81c6-955c86e14c6e">Node-1: Instance #1</span>
根据您需要找到所有需要单击的元素并迭代它们直到完成,该示例使用java,但原理相同

对于您的特定问题,您可以执行下一步,也可以使用xpath进行简化,但这是一个适用于您的特定问题的示例

WebDriver driver = new FirefoxDriver();
  driver.get("http://www.osborneandlittle.com/products-and-collections/fabric");
if (driver.findElements(By.partialLinkText("Osborne & Little")).isEmpty()) {
    new WebDriverWait(
            driver, TIME_TO_WAIT).until(
                    ExpectedConditions.presenceOfElementLocated(
                            By.name("brand")));
    List<WebElement> elements = driver.findElements(By.tagName("label"));

    for (int i = 0; i < elements.size(); i++) {
      String textInCurrentlabel = elements.get(i).getText();
      if (textInCurrentlabel.equals("Osborne & Little")) {
        elements.get(i).click();
        break;
      }
    }
  }
WebDriver=newfirefoxdriver();
驱动程序。获取(“http://www.osborneandlittle.com/products-and-collections/fabric");
if(driver.findElements(By.partialLinkText(“Osborne&Little”)).isEmpty()){
新WebDriverWait(
司机,时间到了。等一下(
预期条件。元素的存在(
按名称(“品牌”);
列表元素=driver.findElements(按.tagName(“标签”));
对于(int i=0;i
根据您需要找到所有需要的元素,然后单击它并迭代它们直到完成,该示例使用java,但原理相同

对于您的特定问题,您可以执行下一步,也可以使用xpath进行简化,但这是一个适用于您的特定问题的示例

WebDriver driver = new FirefoxDriver();
  driver.get("http://www.osborneandlittle.com/products-and-collections/fabric");
if (driver.findElements(By.partialLinkText("Osborne & Little")).isEmpty()) {
    new WebDriverWait(
            driver, TIME_TO_WAIT).until(
                    ExpectedConditions.presenceOfElementLocated(
                            By.name("brand")));
    List<WebElement> elements = driver.findElements(By.tagName("label"));

    for (int i = 0; i < elements.size(); i++) {
      String textInCurrentlabel = elements.get(i).getText();
      if (textInCurrentlabel.equals("Osborne & Little")) {
        elements.get(i).click();
        break;
      }
    }
  }
WebDriver=newfirefoxdriver();
驱动程序。获取(“http://www.osborneandlittle.com/products-and-collections/fabric");
if(driver.findElements(By.partialLinkText(“Osborne&Little”)).isEmpty()){
新WebDriverWait(
司机,时间到了。等一下(
预期条件。元素的存在(
按名称(“品牌”);
列表元素=driver.findElements(按.tagName(“标签”));
对于(int i=0;i
在我看来,您指定的x路径是错误的,但假设它是正确的,并且您的x路径是一个加载问题,因为您尝试在加载元素之前搜索该元素,请尝试此操作并让我知道。在任何情况下,如果您给我更多详细信息,如URL和您需要的元素,我将能够为您提供更多帮助:

from selenium.webdriver.common.keys import Keys
import time

url = "the web page above"

# Creates an instance driver object for chrome browser...
driver = webdriver.Chrome()

# Get the url
driver.get(url)
driver.maximize_window()

# Find list elements by id and click/select on it....
#wait the item is loaded
i=0
while i<1:
    try:
        driver.find_element_by_xpath(".//*[contains(text(), 'Osborne & Little')]").click()
        i=1
    except:
        time.sleep(1)
        i=0
来自selenium.webdriver.common.keys导入密钥
导入时间
url=“上面的网页”
#为chrome浏览器创建实例驱动程序对象。。。
driver=webdriver.Chrome()
#获取url
获取驱动程序(url)
驱动程序。最大化_窗口()
#按id查找列表元素并单击/选择。。。。
#等待项目加载
i=0

虽然我认为您指定的x路径是错误的,但假设它是正确的,并且您的x路径是一个加载问题,因为您尝试在加载元素之前搜索该元素,请尝试此操作并让我知道,在任何情况下,如果您给我更多详细信息,如URL和您需要的元素,我将能够为您提供更多帮助:

from selenium.webdriver.common.keys import Keys
import time

url = "the web page above"

# Creates an instance driver object for chrome browser...
driver = webdriver.Chrome()

# Get the url
driver.get(url)
driver.maximize_window()

# Find list elements by id and click/select on it....
#wait the item is loaded
i=0
while i<1:
    try:
        driver.find_element_by_xpath(".//*[contains(text(), 'Osborne & Little')]").click()
        i=1
    except:
        time.sleep(1)
        i=0
来自selenium.webdriver.common.keys导入密钥
导入时间
url=“上面的网页”
#为chrome浏览器创建实例驱动程序对象。。。
driver=webdriver.Chrome()
#获取url
获取驱动程序(url)
驱动程序。最大化_窗口()
#按id查找列表元素并单击/选择。。。。
#等待项目加载
i=0

我试过你的密码。xpath最好是这样的:
“//*[text()[contains(,'Osborne&Little')]]”
但是它将是一个列表,因为如果它返回每个元素,标题也包含文本。事实并非如此,不知何故,这些无线电波箱是无法到达的。一个简单的
“//input[@type='radio']”
只返回5个元素,因此您必须找到其他方法来访问它们……我尝试了您的xpath,但仍然出现以下错误:ElementNotVisibleException:Message:element不可见(会话信息:chrome=54.0.2840.99)(驱动程序信息:chromedriver=2.25.426923)(0390b88869384d6eb0d5d09729679f934aab9eed),平台=Windows NT 6.1.7600 x86_64)哪一个?这是一个更好的结果,我只得到了标题。我不认为等待建议会有帮助,因为我也尝试了等待,那些RadioBox在几十秒后没有返回,但也许你应该试试。我尝试了你的代码。xpath最好是这样:
“/*[text()[contains](,'Osborne&Little')]“
但它将是一个列表,因为如果它返回每个元素,标题也包含文本。事实并非如此,这些RadioBox不知何故无法访问。一个简单的
”//input[@type='radio']”
只返回5个元素,因此您必须找到其他方法来访问它们……我尝试了xpath,但仍然出现以下错误:ElementNotVisibleException:Message:element不可见(会话信息:chrome=54.0.2840.99)(驱动程序信息:chromedriver=2.25.426923(0390b88869384d6eb0d5d09729679f934aab9eed),平台=Windows NT 6.1.7600 x86_64)哪一个?这是一个更好的结果,我只得到了标题。我不认为等待的建议会有帮助,因为我也尝试了等待,那些收音机盒在几十秒后没有返回,但也许你应该试试。你能用代码片段更好地键入解释吗?你能用co更好地键入解释吗去片段?